Usando o serviço AD Federation para autorizar usuários da AWS com distribuição de direitos

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 origem

Elevado 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ção

2.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 AD

3.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 ADFS

Existem 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
imagem
imagem
imagem
Já o tenho instalado, por isso parece um pouco diferente.
Próximo, Próximo, Instalar ...

5. Configurando o ADFS

Este link permite chamar o configurador ADFS

imagem

imagem

imagem

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

imagem

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

imagem

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

imagem

Crie um novo banco de dados

imagem

Verificando ...

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

imagem

Feito.

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

imagem

imagem

Em seguida, vá para Trust Relationships e escolha Relying Party Trusts

Botão Direito -> Adicionar Confiança da Parte Confiante

imagem

Escolha de declarações cientes

imagem

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.

imagem

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

imagem

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

imagem

Verifique novamente e pronto.

imagem

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

imagem

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: NameId
b. Tipo de reivindicação recebida: Nome da Conta do Windows
c. Tipo de reivindicação de saída: ID do nome
d. Formato de ID do nome de saída: Identificador Persistente
e Passe por todos os valores de reivindicação: marcado

imagem

Feito.

5.2 Obtendo uma lista de funções para o usuário. Modelo: Enviar atributos LDAP como reivindicações ,

imagem

campos:

a. Nome da regra de reivindicação: RoleSessionName
b. Armazenamento de atributos: Active Directory
c. Atributo LDAP: endereços de email
d. Tipo de reivindicação de saída:

 https://aws.amazon.com/SAML/Attributes/RoleSessionName 

imagem

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

imagem

campos
a. Nome da regra de reivindicação: obter grupos do AD
b. 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); 

imagem

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: Roless
b. 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-")); 

imagem

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

imagem

Isso será descrito na cláusula 6.

6. Configurando a AWS

Todas 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 - ADFS
Documento de metadados - esse bloco precisa ser obtido (baixado) no servidor FS em https: ///FederationMetadata/2007-06/FederationMetadata.xml
se o arquivo estiver indisponível, consulte o ponto 8 - Erros conhecidos e suas soluções

imagem

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

imagem

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)

imagem

atribuir tags, se necessário ...

imagem

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

imagem

7. Teste

7.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.

imagem

Digite os dados do nosso usuário AD

imagem

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

imagem

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)

imagem

8. Erros conhecidos e suas soluções

8.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

imagem

Solução 2: provavelmente existe um erro ao escrever o grupo no AD e o papel na AWS

Source: https://habr.com/ru/post/pt466859/


All Articles