Tradução gratuita do artigo de Jeff Wierer "
Habilitando a federação para a AWS usando o Windows Active Directory, ADFS e SAML 2.0 " com adições e esclarecimentos.
1. Os dados de origem
2. Preparação
3. configuração do AD
4. Instale o ADFS
5. Configurando o ADFS
6. Configurando a AWS
7. Teste
8. Erros conhecidos e suas soluções
1. Os dados de origemElevado AD Windows 2016
O autor usou o EC2 do Windows 2008R2 na Amazon, eu tenho uma máquina virtual na rede local do Windows 2016 com acesso à Internet.
Conta da AWS (que pagará por tudo)
Braços retos
Objetivo: permitir que o usuário do AD efetue login na AWS com os direitos especificados (para obter uma função), dependendo do grupo do AD.
Esquema:

1. O usuário (será Bob) abre a página (https://ADFS.domain.name/adfs/ls/IdpInitiatedSignOn.aspx)
2. Bob está autorizado (o ADFS solicita os campos obrigatórios no AD)
3. O navegador de Bob recebe os dados necessários no formato SAML do ADFS
4. O navegador envia os dados recebidos para o serviço de autorização SAML (https://signin.aws.amazon.com/saml)
5. Bob Browser Obtém o URL de logon para o console da AWS
2. Preparação2.1 Você já criou o AD e iniciou usuários que estão em grupos diferentes.
2.2 IIS aumentado (
como aumentar a função do IIS )
2.3 Gere um certificado SSL autoassinado. (
como gerar um certificado SSL autoassinado ) instale-o imediatamente no site padrão.
3. configuração do AD3.1 Você precisa criar dois grupos AWS-Production e AWS-Billing
3.2 Criar usuário Bob (Atenção !!! o usuário deve preencher o campo de email: bob@youdomain.com, caso contrário, você receberá um erro ao entrar no console da AWS)
3.3 Adicionar Bob aos grupos de produção e de faturamento da AWS criados
3.4 Crie outro usuário ADFSSVC. Conta de serviço especial para conectar-se ao AD.
4. Instale o ADFSExistem várias versões do ADFS
- ADFS 1.0 - Windows Server 2003 R2 (download adicional)
- ADFS 1.1 - Windows Server 2008 e Windows Server 2008 R2
- ADFS 2.0 - Windows Server 2008 e Windows Server 2008 R2 (download no Microsoft.com)
- ADFS 2.1 - Windows Server 2012
- ADFS 3.0 - Windows Server 2012 R2 [5]
- ADFS 4.0 - Windows Server 2016 - Nossa escolha
- ADFS 5.0 - Windows Server 2019
O autor baixa o ADFS v2 e o instala.
Vamos elevar o papel do ADFS
Não há dificuldade, três capturas de tela o ajudarão a clicar no botão próximo>
Screenshots


Já o tenho instalado, por isso parece um pouco diferente.
Próximo, Próximo, Instalar ...
5. Configurando o ADFSEste link permite chamar o configurador ADFS



Conecte-se ao AD com o usuário atual.

Aqui precisamos de um certificado que geramos no IIS (Seção 2.3) e do nome do nosso futuro ADFS (adfs.you-domain.com), a linha de exibição é NOME DA SUA EMPRESA

Selecionamos a conta de serviço
ADFSSVC que criamos na
seção 3.4

Crie um novo banco de dados

Verificando ...

Verificação de pré-instalação ... Clique em Configurar

Feito.
O console começa pesquisando "Gerenciamento de AD" no termo de pesquisa do Windows.


Em seguida, vá para
Trust Relationships e escolha
Relying Party TrustsBotão Direito ->
Adicionar Confiança da Parte Confiante
Escolha de
declarações cientes
Selecione "Importar dados que a terceira parte confiável publicou on-line ..." e digite a linha
https://signin.aws.amazon.com/static/saml-metadata.xml
. É o mesmo para todos e é fornecida pela AWS.

Dirija o nome "
AWS GO " a seu critério ou deixe como está.

Selecionamos "Permitir todos os usuários ..." o acesso é permitido a todos.

Verifique novamente e pronto.

Clique com o botão direito do mouse em nossos relés e selecione "Editar política de emissão de reivindicação"

Começamos a adicionar nossas regras:
5.1 Obtendo um nome de usuário. Predefinição:
Transforme uma reivindicação recebida e preencha os campos:
a. Nome da regra de reivindicação:
NameIdb. Tipo de reivindicação recebida:
Nome da Conta do Windowsc. Tipo de reivindicação de saída:
ID do nomed. Formato de ID do nome de saída:
Identificador Persistentee Passe por todos os valores de reivindicação:
marcado
Feito.
5.2 Obtendo uma lista de funções para o usuário. Modelo:
Enviar atributos LDAP como reivindicações ,

campos:
a. Nome da regra de reivindicação:
RoleSessionNameb. Armazenamento de atributos:
Active Directoryc. Atributo LDAP:
endereços de emaild. Tipo de reivindicação de saída:
https://aws.amazon.com/SAML/Attributes/RoleSessionName

Concluído
5.3 Nota importante: Nesta regra, todas as funções do usuário serão extraídas e mapeadas para funções semelhantes no IAM (ou seja, funções que começam com AWS -...). Esta regra recupera todas as associações do AD. Modelo:
Enviar Declarações Usando uma Regra Personalizada
campos
a. Nome da regra de reivindicação:
obter grupos do ADb. Função personalizada:
c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"] => add(store = "Active Directory", types = ("http://temp/variable"), query = ";tokenGroups;{0}", param = c.Value);

para adicionar a próxima regra, você precisará retornar após a etapa 6 (ou poderá adicioná-la e, posteriormente, alterar o ID)
5.4 Adicione outra regra como 5.3, será assim:
a. Nome da regra de reivindicação:
Rolessb. Função personalizada:
c:[Type == "http://temp/variable", Value =~ "(?i)^AWS-"] => issue(Type = "https://aws.amazon.com/SAML/Attributes/Role", Value = RegExReplace(c.Value, "AWS-", "arn:aws:iam::123456789012:saml-provider/ADFS,arn:aws:iam::123456789012:role/ADFS-"));

Aqui você precisa alterar o valor 123456789012 para o seu próprio a partir do IAM AWS

Isso será descrito na cláusula 6.
6. Configurando a AWSTodas as ações ocorrem no console da AWS :)
6.1 Criando provedor SAML
a.
IAM -> Provedores de identidade -> Criar provedor
Tipo de provedor - SAML
Nome do provedor -
ADFSDocumento de metadados - esse bloco precisa ser obtido (baixado) no servidor FS em
https: ///FederationMetadata/2007-06/FederationMetadata.xmlse o arquivo estiver indisponível, consulte o ponto 8 - Erros conhecidos e suas soluções

b. Crie duas funções para nossos usuários.
Funções do IAM Funções -> Criar Função

Esboce as políticas necessárias (por exemplo, Faturamento (política padrão) para usuários que monitorarão o dinheiro, ou você pode pré-criar sua própria política e atribuí-la aqui)

atribuir tags, se necessário ...

Atribua um nome: o nome após "-" deve corresponder ao nome no AD após "-"
Faturamento ASFS =
Faturamento AWS, nesse caso, seu usuário estará no grupo correto.
E clique em Criar função
7. Teste7.1 No seu navegador favorito, vá para a página do servidor
https://localhost/adfs/ls/IdpInitiatedSignOn.aspx
(um certificado autoassinado precisará ser confirmado)
Uma página com conteúdo semelhante será aberta.

Digite os dados do nosso usuário AD

E somos redirecionados para a página da AWS com uma proposta da função sob a qual o usuário trabalhará na AWS

isso ocorre porque nosso Bob está em dois grupos de anúncios ao mesmo tempo (produção da AWS e faturamento da AWS).
Selecionamos o faturamento da AWS e vemos as configurações necessárias (podemos ver e editar o orçamento, mas não temos o direito de criar o EC2 de acordo com as funções que definimos para ele)
8. Erros conhecidos e suas soluções8.1 O portal não responde ou não consegue encontrar as páginas necessárias. Por exemplo:
https://localhost/adfs/ls/IdpInitiatedSignOn.aspx
Solução: no servidor ADFS, você deve executar o comando do PowerShell
Set-AdfsProperties -EnableIdPInitiatedSignonPage $true
Você pode colocar imediatamente o logotipo na página de boas-vindas
Set-AdfsWebTheme -TargetName default -Illustration @{path="C:\path\adfslogo.jpg"}
8.2 Ao redirecionar para o console da AWS, você recebe um erro do formulário:
RoleSessionName is required in AuthnResponse (Service: AWSSecurityTokenService; Status Code: 400; Error Code: InvalidIdentityToken; Request ID: e4ddf8cd-d7b7-11e9-8729-09c90d2561b0). Please try again
Solução: provavelmente seu usuário não possui um campo de email no AD
Solução 2: provavelmente existe um erro ao escrever o grupo no AD e o papel na AWS