Configure a identidade federada com o AWS Tools for PowerShell - AWS Tools for PowerShell

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Configure a identidade federada com o AWS Tools for PowerShell

Para permitir que os usuários da sua organização acessem AWS os recursos, você deve configurar um método de autenticação padrão e repetível para fins de segurança, auditabilidade, conformidade e capacidade de oferecer suporte à separação de funções e contas. Embora seja comum fornecer aos usuários a capacidade de acessar AWS APIs, sem acesso federadoAPI, você também precisaria criar usuários AWS Identity and Access Management (IAM), o que anula o propósito de usar a federação. Este tópico descreve o suporte SAML (Security Assertion Markup Language) no AWS Tools for PowerShell que facilita sua solução de acesso federado.

SAMLo suporte no AWS Tools for PowerShell permite que você forneça aos seus usuários acesso federado aos AWS serviços. SAMLé um formato XML baseado e de padrão aberto para transmitir dados de autenticação e autorização do usuário entre serviços; em particular, entre um provedor de identidade (como os Serviços de Federação do Active Directory) e um provedor de serviços (como AWS). Para obter mais informações sobre SAML e como funciona, consulte SAMLna Wikipedia ou nas Especificações SAML técnicas no site da Organization for the Advancement of Structured Information Standards (OASIS). SAMLo suporte no AWS Tools for PowerShell é compatível com SAML 2.0.

Pré-requisitos

Você deve ter o seguinte em vigor antes de tentar usar o SAML suporte pela primeira vez.

  • Uma solução de identidade federada corretamente integrada com sua conta da AWS para acesso ao console usando apenas as credenciais da sua organização. Para obter mais informações sobre como fazer isso especificamente para os Serviços de Federação do Active Directory, consulte Sobre a Federação SAML 2.0 no Guia do IAM Usuário e a postagem do blog Habilitando a federação para AWS usar o Windows Active Directory, AD FS e SAML 2.0. Embora a publicação do blog aborde o AD FS 2.0, as etapas serão semelhantes se você estiver executando o AD FS 3.0.

  • Versão 3.1.31.0 ou mais recente da AWS Tools for PowerShell instalada em sua estação de trabalho local.

Como um usuário federado por identidade obtém acesso federado ao serviço AWS APIs

O processo a seguir descreve, em alto nível, como um usuário do Active Directory (AD) é federado pelo AD FS para obter acesso aos AWS recursos.

Diagram showing federated user access flow to AWS resources via AD FS and Security Token Service.
  1. O cliente no computador do usuário federado autentica em relação ao AD FS.

  2. Se a autenticação for bem-sucedida, o AD FS enviará ao usuário uma SAML declaração.

  3. O cliente do usuário envia a SAML declaração para o AWS Security Token Service (STS) como parte de uma solicitação de SAML federação.

  4. STSretorna uma SAML resposta que contém credenciais AWS temporárias para uma função que o usuário pode assumir.

  5. O usuário acessa o AWS serviço APIs incluindo essas credenciais temporárias na solicitação feita por. AWS Tools for PowerShell

Como SAML o Support funciona no AWS Tools for PowerShell

Esta seção descreve como os AWS Tools for PowerShell cmdlets permitem a configuração da federação de identidade SAML baseada para usuários.

Diagram showing SAML-based federation flow between organization, AD FS, AWS, and service APIs.
  1. AWS Tools for PowerShell autentica no AD FS usando as credenciais atuais do usuário do Windows, ou interativamente, quando o usuário tenta executar um cmdlet que exige credenciais para ligar. AWS

  2. O AD FS autentica o usuário.

  3. O AD FS gera uma resposta de autenticação SAML 2.0 que inclui uma declaração; o objetivo da afirmação é identificar e fornecer informações sobre o usuário. AWS Tools for PowerShell extrai a lista das funções autorizadas do usuário a partir da SAML declaração.

  4. AWS Tools for PowerShell encaminha a SAML solicitação, incluindo os Amazon Resource Names (ARN) da função solicitada, para STS fazendo a AssumeRoleWithSAMLRequest API chamada.

  5. Se a SAML solicitação for válida, STS retornará uma resposta que contém o AWS AccessKeyIdSecretAccessKey, SessionToken e. Essas credenciais duram 3.600 segundos (1 hora).

  6. O usuário agora tem credenciais válidas para trabalhar com qualquer AWS serviço APIs que a função do usuário esteja autorizada a acessar. AWS Tools for PowerShell aplica automaticamente essas credenciais a todas as AWS API chamadas subsequentes e as renova automaticamente quando elas expiram.

    nota

    Quando as credenciais expiram e novas credenciais são necessárias, o AWS Tools for PowerShell reautentica automaticamente com o AD FS e obtém novas credenciais para a próxima hora. Para usuários de contas associadas a um domínio, esse processo ocorre silenciosamente. Para contas que não são associadas a um domínio, AWS Tools for PowerShell solicita que os usuários insiram suas credenciais antes de poderem se autenticar novamente.

Como usar os cmdlets PowerShell SAML de configuração

AWS Tools for PowerShell inclui dois novos cmdlets que fornecem SAML suporte.

  • O Set-AWSSamlEndpoint configura o endpoint do AD FS, atribui um nome amigável ao endpoint e, opcionalmente, descreve o tipo de autenticação do endpoint.

  • O Set-AWSSamlRoleProfile cria ou edita um perfil de conta de usuário que você deseja associar a um endpoint do AD FS, identificado ao especificar o nome amigável fornecido ao cmdlet Set-AWSSamlEndpoint. Cada perfil de função é mapeado para uma única função que um usuário está autorizado a executar.

    Assim como nos perfis de AWS credenciais, você atribui um nome amigável ao perfil da função. Você pode usar o mesmo nome amigável com o Set-AWSCredential cmdlet ou como o valor do -ProfileName parâmetro para qualquer cmdlet que invoque o serviço. AWS APIs

Abra uma nova AWS Tools for PowerShell sessão. Se você estiver executando a PowerShell versão 3.0 ou mais recente, o AWS Tools for PowerShell módulo será importado automaticamente quando você executar qualquer um de seus cmdlets. Se você estiver executando o PowerShell 2.0, deverá importar o módulo manualmente executando o cmdlet ``Import-Module``, conforme mostrado no exemplo a seguir.

PS > Import-Module "C:\Program Files (x86)\AWS Tools\PowerShell\AWSPowerShell\AWSPowerShell.psd1"

Como executar os cmdlets Set-AWSSamlEndpoint e Set-AWSSamlRoleProfile

  1. Primeiro, defina as configurações de endpoint para o sistema do AD FS. A maneira mais simples de fazer isso é armazenar o endpoint em uma variável, como mostrado nesta etapa. Certifique-se de substituir a conta de espaço reservado IDs e o nome do host do AD FS pela sua própria conta IDs e nome do host do AD FS. Especifique o nome de host do AD FS no parâmetro Endpoint.

    PS > $endpoint = "https://adfs.example.com/adfs/ls/IdpInitiatedSignOn.aspx?loginToRp=urn:amazon:webservices"
  2. Para criar as configurações de endpoint, execute o cmdlet Set-AWSSamlEndpoint, especificando o valor correto para o parâmetro AuthenticationType. Os valores válidos incluem Basic, Digest, Kerberos, Negotiate e NTLM. Se você não especificar esse parâmetro, o valor padrão será Kerberos.

    PS > $epName = Set-AWSSamlEndpoint -Endpoint $endpoint -StoreAs ADFS-Demo -AuthenticationType NTLM

    O cmdlet retorna o nome amigável atribuídos usando o parâmetro -StoreAs, para que você possa usá-lo ao executar Set-AWSSamlRoleProfile na próxima linha.

  3. Agora, execute o Set-AWSSamlRoleProfile cmdlet para se autenticar com o provedor de identidade do AD FS e obter o conjunto de funções (na SAML declaração) que o usuário está autorizado a executar.

    O cmdlet Set-AWSSamlRoleProfile usa o conjunto retornado de funções para solicitar que o usuário selecione uma função a ser associada ao perfil especificado ou confirme que os parâmetros de dados fornecidos nos parâmetros estão presentes (se não estiverem, será solicitado que o usuário escolha). Se o usuário estiver autorizado para apenas uma função, o cmdlet associará a função ao perfil automaticamente, sem fazer a solicitação ao usuário. Não há necessidade de fornecer uma credencial para configurar um perfil para uso associado a um domínio.

    PS > Set-AWSSamlRoleProfile -StoreAs SAMLDemoProfile -EndpointName $epName

    Como alternativa, para non-domain-joined contas, você pode fornecer credenciais do Active Directory e, em seguida, selecionar uma AWS função à qual o usuário tenha acesso, conforme mostrado na linha a seguir. Isso será útil se você tiver contas de usuário diferentes do Active Directory para diferenciar funções em sua organização (por exemplo, funções administrativas).

    PS > $credential = Get-Credential -Message "Enter the domain credentials for the endpoint" PS > Set-AWSSamlRoleProfile -EndpointName $epName -NetworkCredential $credential -StoreAs SAMLDemoProfile
  4. Em qualquer um dos casos, o cmdlet Set-AWSSamlRoleProfile solicita que você escolha a função que deve ser armazenada no perfil. O exemplo a seguir mostra duas funções disponíveis: ADFS-Dev e ADFS-Production. As IAM funções são associadas às suas credenciais de login do AD pelo administrador do AD FS.

    Select Role Select the role to be assumed when this profile is active [1] 1 - ADFS-Dev [2] 2 - ADFS-Production [?] Help (default is "1"):

    Como alternativa, é possível especificar uma função sem o prompt, inserindo o RoleARN, o PrincipalARN e os parâmetros opcionais NetworkCredential. Se a função especificada não estiver listada na declaração retornada pela autenticação, o usuário será solicitado a escolher entre as funções disponíveis.

    PS > $params = @{ "NetworkCredential"=$credential, "PrincipalARN"="{arn:aws:iam::012345678912:saml-provider/ADFS}", "RoleARN"="{arn:aws:iam::012345678912:role/ADFS-Dev}" } PS > $epName | Set-AWSSamlRoleProfile @params -StoreAs SAMLDemoProfile1 -Verbose
  5. Você pode criar perfis para todas as funções em um único comando ao adicionar o parâmetro StoreAllRoles, conforme mostrado no código a seguir. Observe que o nome da função é usado como o nome do perfil.

    PS > Set-AWSSamlRoleProfile -EndpointName $epName -StoreAllRoles ADFS-Dev ADFS-Production

Como usar perfis de função para executar cmdlets que exigem credenciais AWS

Para executar cmdlets que exigem AWS credenciais, você pode usar perfis de função definidos no arquivo de credencial AWS compartilhado. Forneça o nome de um perfil de função para Set-AWSCredential (ou como o valor de qualquer ProfileName parâmetro no AWS Tools for PowerShell) para obter AWS credenciais temporárias automaticamente para a função descrita no perfil.

Embora você use apenas um perfil de função por vez, pode alternar entre os perfis em uma sessão de shell. O cmdlet Set-AWSCredential não faz a autenticação e não obtém credenciais quando você o executa sozinho; o cmdlet registra que você deseja usar um perfil de função especificado. Até que você execute um cmdlet que exija credenciais da AWS , não ocorrerá nenhuma autenticação ou solicitação de credenciais.

Agora você pode usar as AWS credenciais temporárias obtidas com o SAMLDemoProfile perfil para trabalhar com o AWS serviçoAPIs. As seções a seguir mostram exemplos de como usar os perfis de função.

Exemplo 1: Definir uma função padrão com Set-AWSCredential

Este exemplo define uma função padrão para uma AWS Tools for PowerShell sessão usandoSet-AWSCredential. Em seguida, você pode executar cmdlets que exijam credenciais e sejam autorizados pela função especificada. Este exemplo lista todas as instâncias do Amazon Elastic Compute Cloud na região Oeste dos EUA (Oregon) que estão associadas ao perfil especificado com o cmdlet Set-AWSCredential.

PS > Set-AWSCredential -ProfileName SAMLDemoProfile PS > Get-EC2Instance -Region us-west-2 | Format-Table -Property Instances,GroupNames Instances GroupNames --------- ---------- {TestInstance1} {default} {TestInstance2} {} {TestInstance3} {launch-wizard-6} {TestInstance4} {default} {TestInstance5} {} {TestInstance6} {AWS-OpsWorks-Default-Server}

Exemplo 2: Alterar perfis de função durante uma PowerShell sessão

Este exemplo lista todos os buckets do Amazon S3 disponíveis na AWS conta da função associada ao perfil. SAMLDemoProfile O exemplo mostra que, embora você possa ter usado outro perfil no início da AWS Tools for PowerShell sessão, você pode alterar os perfis especificando um valor diferente para o -ProfileName parâmetro com cmdlets que o suportam. Essa é uma tarefa comum para administradores que gerenciam o Amazon S3 a partir PowerShell da linha de comando.

PS > Get-S3Bucket -ProfileName SAMLDemoProfile CreationDate BucketName ------------ ---------- 7/25/2013 3:16:56 AM amzn-s3-demo-bucket 4/15/2015 12:46:50 AM amzn-s3-demo-bucket1 4/15/2015 6:15:53 AM amzn-s3-demo-bucket2 1/12/2015 11:20:16 PM amzn-s3-demo-bucket3

Observe que o cmdlet Get-S3Bucket especifica o nome do perfil criado executando o cmdlet Set-AWSSamlRoleProfile. Este comando poderá ser útil se você tiver configurado um perfil de função anteriormente em sua sessão (por exemplo, ao executar o cmdlet Set-AWSCredential) e quiser usar um perfil de função diferente para o cmdlet Get-S3Bucket. O gerenciador de perfil disponibiliza credenciais temporárias para o cmdlet Get-S3Bucket.

Embora as credenciais expirem após 1 hora (um limite imposto porSTS), as atualiza AWS Tools for PowerShell automaticamente solicitando uma nova SAML declaração quando a ferramenta detecta que as credenciais atuais expiraram.

Para usuários associados a um domínio, esse processo ocorre sem interrupção, porque a identidade do Windows do usuário atual é usada durante a autenticação. Para contas de non-domain-joined usuário, AWS Tools for PowerShell mostra uma solicitação de PowerShell credencial solicitando a senha do usuário. O usuário fornece credenciais que são usadas para autenticar novamente o usuário e obter uma nova asserção.

Exemplo 3: Obter instâncias em uma região

O exemplo a seguir lista todas as EC2 instâncias da Amazon na região Ásia-Pacífico (Sydney) associadas à conta usada pelo ADFS-Production perfil. Esse é um comando útil para retornar todas as EC2 instâncias da Amazon em uma região.

PS > (Get-Ec2Instance -ProfileName ADFS-Production -Region ap-southeast-2).Instances | Select InstanceType, @{Name="Servername";Expression={$_.tags | where key -eq "Name" | Select Value -Expand Value}} InstanceType Servername ------------ ---------- t2.small DC2 t1.micro NAT1 t1.micro RDGW1 t1.micro RDGW2 t1.micro NAT2 t2.small DC1 t2.micro BUILD

Leitura adicional

Para obter informações gerais sobre como implementar o API acesso federado, consulte Como implementar uma solução geral para API federado/ CLI acesso usando SAML 2.0.

Para perguntas ou comentários de suporte, visite os fóruns de AWS desenvolvedores para PowerShell scripts ou. NETDesenvolvimento.