Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Configure la identidad federada con AWS Tools for PowerShell
Para permitir que los usuarios de su organización accedan a AWS los recursos, debe configurar un método de autenticación estándar y repetible para garantizar la seguridad, la auditabilidad, el cumplimiento y la capacidad de permitir la separación de funciones y cuentas. Si bien es habitual ofrecer a los usuarios la posibilidad de acceder AWS APIs, sin un API acceso federado, también tendrías que crear AWS Identity and Access Management (IAM) usuarios, lo que va en contra de la finalidad de utilizar la federación. En este tema se describe la compatibilidad SAML (lenguaje de marcado de aserciones de seguridad) con la solución AWS Tools for PowerShell que facilita el acceso federado.
SAMLel soporte en el AWS Tools for PowerShell le permite proporcionar a sus usuarios un acceso federado a los servicios. AWS
SAMLes un formato XML basado en estándares abiertos para transmitir datos de autenticación y autorización de usuarios entre servicios; en particular, entre un proveedor de identidad (como los Servicios de federación de Active Directory
Requisitos previos
Debe disponer de lo siguiente antes de intentar utilizar el SAML soporte por primera vez.
-
Una solución de identidad federada que esté integrada de forma correcta a su cuenta de AWS para poder tener acceso a la consola usando solo las credenciales de su organización. Para obtener más información acerca de cómo hacerlo específicamente para los Servicios de federación de Active Directory, consulte Acerca de la federación SAML 2.0 en la Guía del IAM usuario y la entrada del blog titulada Cómo habilitar la federación para AWS usar Windows Active Directory, AD FS y SAML 2.0
. Aunque la entrada de blog explica el procedimiento para AD FS 2.0, los pasos son similares si ejecuta AD FS 3.0. -
La versión 3.1.31.0 o posterior de la AWS Tools for PowerShell instalada en la estación de trabajo local.
Cómo obtiene un usuario con identidad federada el acceso federado al servicio AWS APIs
El siguiente proceso describe, de forma general, cómo AD FS federa a un usuario de Active Directory (AD) para obtener acceso a los recursos. AWS
-
El cliente en el equipo del usuario federado se autentica en AD FS.
-
Si la autenticación se realiza correctamente, AD FS envía una SAML afirmación al usuario.
-
El cliente del usuario envía la SAML aserción a AWS Security Token Service (STS) como parte de una SAML solicitud de federación.
-
STSdevuelve una SAML respuesta que contiene credenciales AWS temporales para un rol que el usuario puede asumir.
-
El usuario accede AWS al servicio APIs al incluir esas credenciales temporales en la solicitud realizada por AWS Tools for PowerShell.
Cómo funciona SAML Support en el AWS Tools for PowerShell
En esta sección se describe cómo los AWS Tools for PowerShell cmdlets permiten a los usuarios configurar la federación de identidades SAML basada en datos.
-
AWS Tools for PowerShell se autentica en AD FS con las credenciales actuales del usuario de Windows o, de forma interactiva, cuando el usuario intenta ejecutar un cmdlet que requiere credenciales para realizar llamadas. AWS
-
AD FS autentica al usuario.
-
AD FS genera una respuesta de autenticación SAML 2.0 que incluye una afirmación; el objetivo de la afirmación es identificar al usuario y proporcionar información sobre él. AWS Tools for PowerShell extrae la lista de las funciones autorizadas del usuario de la SAML afirmación.
-
AWS Tools for PowerShell reenvía la SAML solicitud, incluidos los nombres de recursos de Amazon (ARN) del rol solicitado, STS al realizar la
AssumeRoleWithSAMLRequest
API llamada. -
Si la SAML solicitud es válida, STS devuelve una respuesta que contiene los caracteres AWS
AccessKeyId
SecretAccessKey
, ySessionToken
. Estas credenciales duran 3 600 segundos (1 hora). -
El usuario ahora tiene credenciales válidas para trabajar con cualquier AWS servicio al APIs que el rol del usuario esté autorizado a acceder. AWS Tools for PowerShell aplica automáticamente estas credenciales a cualquier AWS API llamada posterior y las renueva automáticamente cuando caducan.
nota
Cuando las credenciales caducan y se necesitan nuevas credenciales, AWS Tools for PowerShell vuelve a autenticarse automáticamente con AD FS y obtiene credenciales nuevas durante la hora siguiente. Para los usuarios de cuentas unidas al dominio, este proceso se produce silenciosamente. En el caso de las cuentas que no están unidas a un dominio, AWS Tools for PowerShell pide a los usuarios que introduzcan sus credenciales antes de poder volver a autenticarse.
Cómo utilizar los cmdlets de configuración PowerShell SAML
AWS Tools for PowerShell incluye dos cmdlets nuevos que proporcionan soporte. SAML
-
AD FS
Set-AWSSamlEndpoint
configura el punto de enlace de AD-FS, asigna un nombre descriptivo al punto de enlace y, de forma opcional, describe el tipo de autenticación del punto de enlace. -
Set-AWSSamlRoleProfile
crea o edita el perfil de cuenta de usuario que desea asociar a un punto de enlace de AD FS, identificado mediante la especificación del nombre descriptivo proporcionado en el cmdletSet-AWSSamlEndpoint
. Cada perfil de rol se asigna a un único rol que el usuario tiene permiso para realizar.Al igual que con los perfiles de AWS credenciales, se asigna un nombre descriptivo al perfil de rol. Puede usar el mismo nombre descriptivo con el
Set-AWSCredential
cmdlet o como valor del-ProfileName
parámetro para cualquier cmdlet que invoque el servicio. AWS APIs
Abra una sesión nueva. AWS Tools for PowerShell Si ejecuta la PowerShell versión 3.0 o una versión posterior, el AWS Tools for PowerShell módulo se importa automáticamente al ejecutar cualquiera de sus cmdlets. Si ejecuta la PowerShell versión 2.0, debe importar el módulo manualmente ejecutando el cmdlet ``Import-Module``, como se muestra en el siguiente ejemplo.
PS >
Import-Module "C:\Program Files (x86)\AWS Tools\PowerShell\AWSPowerShell\AWSPowerShell.psd1"
Cómo ejecutar los cmdlets Set-AWSSamlEndpoint
y Set-AWSSamlRoleProfile
-
En primer lugar, configure el valor del punto de enlace del sistema AD FS. La forma más sencilla de hacer esto es almacenar el punto de enlace en una variable, tal y como se muestra en este paso. Asegúrese de reemplazar la cuenta de marcador de posición y el nombre de host de AD FS por su IDs propia cuenta y el nombre de host de AD FS. IDs Especifique el nombre de host de AD FS en el parámetro
Endpoint
.PS >
$endpoint = "https://
adfs.example.com
/adfs/ls/IdpInitiatedSignOn.aspx?loginToRp=urn:amazon:webservices" -
Para crear el valor del punto de enlace, ejecute el cmdlet
Set-AWSSamlEndpoint
especificando el valor correcto para el parámetroAuthenticationType
. Los valores válidos sonBasic
,Digest
,Kerberos
,Negotiate
yNTLM
. Si no especifica este parámetro, el valor predeterminado esKerberos
.PS >
$epName = Set-AWSSamlEndpoint -Endpoint $endpoint -StoreAs
ADFS-Demo
-AuthenticationType NTLMEl cmdlet devuelve el nombre descriptivo que asignó mediante el parámetro
-StoreAs
, para que pueda utilizarlo cuando ejecuteSet-AWSSamlRoleProfile
en la línea siguiente. -
Ahora, ejecute el
Set-AWSSamlRoleProfile
cmdlet para autenticarse con el proveedor de identidades de AD FS y obtener el conjunto de funciones (en la SAML afirmación) que el usuario está autorizado a desempeñar.El cmdlet
Set-AWSSamlRoleProfile
utiliza el conjunto de roles devueltos para pedir al usuario que seleccione el rol que desea asociar con el perfil especificado o para validar que los datos del rol proporcionados en los parámetros están presentes (si no están presentes, se le pedirá al usuario que los elija). Si el usuario está autorizado para un único rol, el cmdlet asocia el rol con el perfil automáticamente, sin preguntarle al usuario. No es necesario proporcionar credenciales para configurar un perfil para su uso con una cuenta unida al dominio.PS >
Set-AWSSamlRoleProfile -StoreAs
SAMLDemoProfile
-EndpointName $epNameComo alternativa, en el caso de non-domain-joined las cuentas, puedes proporcionar las credenciales de Active Directory y, a continuación, seleccionar una AWS función a la que el usuario tenga acceso, como se muestra en la siguiente línea. Esto es útil si tiene cuentas de usuario de Active Directory diferentes para diferenciar los roles dentro de su organización (por ejemplo, funciones de administración).
PS >
$credential = Get-Credential -Message "Enter the domain credentials for the endpoint"
PS >
Set-AWSSamlRoleProfile -EndpointName $epName -NetworkCredential $credential -StoreAs
SAMLDemoProfile
-
En cualquier caso, el cmdlet
Set-AWSSamlRoleProfile
le pide que elija el rol que debe almacenarse en el perfil. En el ejemplo siguiente se muestran dos roles disponibles:ADFS-Dev
yADFS-Production
. El administrador de AD FS asocia las IAM funciones a sus credenciales de inicio de sesión de AD.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"):
También puede especificar un rol sin la solicitud introduciendo los parámetros
RoleARN
,PrincipalARN
y, opcionalmente,NetworkCredential
. Si el rol especificado no aparece en la aserción devuelta por la autenticación, se le pedirá al usuario que elija entre los roles disponibles.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
-
Puede crear perfiles para todos los roles en un solo comando añadiendo el parámetro
StoreAllRoles
, tal y como se muestra en el siguiente código. Tenga en cuenta que el nombre del rol se utiliza como nombre de perfil.PS >
Set-AWSSamlRoleProfile -EndpointName $epName -StoreAllRoles
ADFS-Dev ADFS-Production
Cómo usar los perfiles de rol para ejecutar cmdlets que requieren credenciales AWS
Para ejecutar cmdlets que requieren AWS credenciales, puede usar los perfiles de rol definidos en el AWS archivo de credenciales compartido. Proporcione el nombre de un perfil de rol Set-AWSCredential
(o el valor de cualquier ProfileName
parámetro del AWS Tools for PowerShell) para obtener automáticamente AWS las credenciales temporales para el rol que se describe en el perfil.
Aunque utilice un único perfil de rol cada vez, puede cambiar de un perfil a otro dentro de una sesión del shell. El cmdlet Set-AWSCredential
no autentica ni obtiene credenciales cuando se ejecuta por sí solo; el cmdlet registra que desea usar un perfil de rol especificado. Hasta que ejecuta un cmdlet que requiera credenciales de AWS
, no se produce la autenticación ni la solicitud de credenciales.
Ahora puede usar las AWS credenciales temporales que obtuvo con el SAMLDemoProfile
perfil para trabajar con el AWS servicioAPIs. En las secciones siguientes se muestran ejemplos de cómo utilizar los perfiles de rol.
Ejemplo 1: Definir un rol predeterminado con Set-AWSCredential
En este ejemplo se establece un rol predeterminado para una AWS Tools for PowerShell sesión medianteSet-AWSCredential
. A continuación, puede ejecutar cmdlets que requieran credenciales y que estén autorizados por el rol especificado. En este ejemplo se muestran todas las instancias de Amazon Elastic Compute Cloud en la región EE. UU. Oeste (Oregón) que están asociadas con el perfil especificado con el 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}
Ejemplo 2: cambiar los perfiles de los roles durante una PowerShell sesión
En este ejemplo, se enumeran todos los buckets de Amazon S3 disponibles en la AWS cuenta del rol asociado al SAMLDemoProfile
perfil. En el ejemplo se muestra que, si bien es posible que haya utilizado otro perfil al principio de la AWS Tools for PowerShell sesión, puede cambiar los perfiles especificando un valor diferente para el -ProfileName
parámetro con los cmdlets que lo admitan. Esta es una tarea habitual para los administradores que gestionan Amazon S3 desde la línea de PowerShell comandos.
PS >
Get-S3Bucket -ProfileName SAMLDemoProfile
CreationDate BucketName ------------ ---------- 7/25/2013 3:16:56 AM
amzn-s3-demo-bucket
4/15/2015 12:46:50 AMamzn-s3-demo-bucket1
4/15/2015 6:15:53 AMamzn-s3-demo-bucket2
1/12/2015 11:20:16 PMamzn-s3-demo-bucket3
Tenga en cuenta que el cmdlet Get-S3Bucket
especifica el nombre del perfil que se creó al ejecutar el cmdlet Set-AWSSamlRoleProfile
. Este comando puede ser útil si ha definido un perfil de rol anteriormente en su sesión (por ejemplo, ejecutando el cmdlet Set-AWSCredential
) y desea utilizar un perfil de rol diferente para el cmdlet Get-S3Bucket
. El administrador de perfiles pone credenciales temporales a disposición del cmdlet Get-S3Bucket
.
Si bien las credenciales caducan al cabo de 1 hora (un límite obligatorioSTS), las actualiza AWS Tools for PowerShell automáticamente solicitando una nueva SAML confirmación cuando la herramienta detecta que las credenciales actuales han caducado.
Para los usuarios unidos a un dominio, este proceso se produce sin interrupción, porque durante la autenticación se usa la identidad de Windows del usuario actual. En el caso non-domain-joined de las cuentas de usuario, AWS Tools for PowerShell muestra una solicitud de PowerShell credenciales en la que se solicita la contraseña del usuario. El usuario proporciona las credenciales, que se usan para volver a autenticarle y obtener una nueva aserción.
Ejemplo 3: Obtener instancias en una región
En el siguiente ejemplo, se enumeran todas las EC2 instancias de Amazon de la región Asia Pacífico (Sídney) que están asociadas a la cuenta utilizada por el ADFS-Production
perfil. Este comando es útil para devolver todas las EC2 instancias de Amazon de una región.
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
Lecturas adicionales
Para obtener información general sobre cómo implementar el API acceso federado, consulte Cómo implementar una solución general para el acceso federado o el CLI acceso mediante SAML la API versión
Si tiene preguntas o comentarios de soporte, visite los foros de AWS desarrolladores sobre PowerShell creación de scripts