Configure aserciones SAML para la respuesta de autenticación - AWS Identity and Access Management

Configure aserciones SAML para la respuesta de autenticación

En su organización, después de verificar la identidad de un usuario, el proveedor de identidades (IdP) externo envía una respuesta de autenticación al punto de conexión SAML de AWS en https://region-code.signin.aws.amazon.com/saml. Para obtener una lista de los posibles reemplazos de region-code, consulte la columna Region (Región) en Puntos de conexión de inicio de sesión de AWS. Esta respuesta es una solicitud POST que contiene un token de SAML que cumple el estándar HTTP POST Binding for SAML 2.0 y que incluye los siguientes elementos o notificaciones. Estas notificaciones se configuran en su proveedor de identidades compatible con SAML. Consulte la documentación de su proveedor de identidad para obtener instrucciones sobre cómo ingresar esos reclamos.

Cuando el proveedor de identidades envía la respuesta que contiene las notificaciones a AWS, muchas de las notificaciones entrantes se mapean a claves de contexto de AWS. Estas claves de contexto pueden comprobarse en las políticas de IAM utilizando el elemento Condition. Encontrará una lista de los mapeos disponibles en la sección Mapeo de atributos SAML con claves de contexto de una política de confianza de AWS.

Subject y NameID

En el fragmento siguiente se muestra un ejemplo. Solo tiene que cambiar sus propios valores por los valores marcados. Debe haber exactamente un elemento SubjectConfirmation con un elemento SubjectConfirmationData que contenga tanto el atributo NotOnOrAfter como un atributo Recipient. Estos atributos incluyen un valor que debe coincidir con el punto de conexión de AWS https://region-code.signin.aws.amazon.com/saml. Para obtener una lista de los posibles valores de region-code, consulte la columna Region (Región) en Puntos de conexión de inicio de sesión de AWS. Para el valor AWS, también puede utilizar https://signin.aws.amazon.com/saml, como se muestra en el ejemplo siguiente.

El valor de los elementos NameID puede ser “persistent” o “transient”, o bien el URI de formato completo proporcionado por la solución del proveedor de identidades. El valor “persistent” indica que el valor de NameID es el mismo para un usuario entre sesiones. Si el valor es “transient”, el usuario tendrá un valor de NameID diferente para cada sesión. Las interacciones mediante inicio de sesión único permiten los siguientes tipos de identificadores:

  • urn:oasis:names:tc:SAML:2.0:nameid-format:persistent

  • urn:oasis:names:tc:SAML:2.0:nameid-format:transient

  • urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress

  • urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified

  • urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName

  • urn:oasis:names:tc:SAML:1.1:nameid-format:WindowsDomainQualifiedName

  • urn:oasis:names:tc:SAML:2.0:nameid-format:kerberos

  • urn:oasis:names:tc:SAML:2.0:nameid-format:entity

<Subject> <NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent">_cbb88bf52c2510eabe00c1642d4643f41430fe25e3</NameID> <SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"> <SubjectConfirmationData NotOnOrAfter="2013-11-05T02:06:42.876Z" Recipient="https://signin.aws.amazon.com/saml"/> </SubjectConfirmation> </Subject>
importante

La clave de contexto saml:aud proviene del atributo recipient (destinatario) de SAML, ya que es el equivalente de SAML del campo de público de OIDC; por ejemplo, accounts.google.com:aud.

Atributo PrincipalTag de SAML

(Opcional) Puede utilizar un elemento Attribute con el atributo Name establecido en https://aws.amazon.com/SAML/Attributes/PrincipalTag:{TagKey}. Este elemento le permite pasar atributos como etiquetas de sesión en la aserción SAML. Para obtener más información acerca de las etiquetas de sesión, consulte Transferencia de etiquetas de sesión en AWS STS.

Para pasar atributos como etiquetas de sesión, incluya el elemento AttributeValue que especifica el valor de la etiqueta. Por ejemplo, para pasar los pares clave-valor de etiquetas Project = Marketing y CostCenter = 12345, utilice el siguiente atributo. Incluya un elemento Attribute separado para cada etiqueta.

<Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:Project"> <AttributeValue>Marketing</AttributeValue> </Attribute> <Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:CostCenter"> <AttributeValue>12345</AttributeValue> </Attribute>

Para establecer las etiquetas anteriores como transitivas, incluya otro elemento Attribute con el atributo Name establecido en https://aws.amazon.com/SAML/Attributes/TransitiveTagKeys. Este es un atributo opcional multivalor que establece las etiquetas de sesión como transitivas. Las etiquetas transitivas persisten cuando se utiliza la sesión de SAML para asumir otro rol en AWS. Esto se conoce como encadenamiento de roles. Por ejemplo, para establecer tanto las etiquetas CostCenter como las Principal como transitivas, utilice el siguiente atributo para especificar las claves.

<Attribute Name="https://aws.amazon.com/SAML/Attributes/TransitiveTagKeys"> <AttributeValue>Project</AttributeValue> <AttributeValue>CostCenter</AttributeValue> </Attribute>

Atributo Role de SAML

Puede utilizar un elemento Attribute con el atributo Name establecido en https://aws.amazon.com/SAML/Attributes/Role. Este elemento contiene uno o más elementos AttributeValue que indican el proveedor de identidad de IAM y el rol que el IdP asigna al usuario. El rol de IAM y el proveedor de identidades de IAM se especifican como un par de ARN delimitados con comas en el mismo formato que los parámetros RoleArn y PrincipalArn que se transfieren a AssumeRoleWithSAML. Este elemento debe contener al menos un par de proveedores de roles (elemento AttributeValue) y puede contener varios pares. Si el elemento contiene varios pares, se le pide al usuario que seleccione qué rol quiere asumir cuando utilice WebSSO para iniciar sesión en la AWS Management Console.

importante

El valor del atributo Name de la etiqueta Attribute distingue entre mayúsculas y minúsculas. Debe establecerse en https://aws.amazon.com/SAML/Attributes/Role con precisión.

<Attribute Name="https://aws.amazon.com/SAML/Attributes/Role"> <AttributeValue>arn:aws:iam::account-number:role/role-name1,arn:aws:iam::account-number:saml-provider/provider-name</AttributeValue> <AttributeValue>arn:aws:iam::account-number:role/role-name2,arn:aws:iam::account-number:saml-provider/provider-name</AttributeValue> <AttributeValue>arn:aws:iam::account-number:role/role-name3,arn:aws:iam::account-number:saml-provider/provider-name</AttributeValue> </Attribute>

Atributo RoleSessionName de SAML

Puede utilizar un elemento Attribute con el atributo Name establecido en https://aws.amazon.com/SAML/Attributes/RoleSessionName. Este elemento contiene un elemento AttributeValue que proporciona un identificador para las credenciales temporales que se generan cuando se asume el rol. Puede utilizar esto para asociar las credenciales temporales con el usuario que está utilizando la aplicación. Este elemento se utiliza para mostrar información del usuario en la AWS Management Console. El valor del elemento AttributeValue debe tener entre 2 y 64 caracteres, solo puede contener caracteres alfanuméricos, guiones bajos y los siguientes caracteres: . , + = @ - (guion). No puede contener espacios. El valor suele ser un ID de usuario (johndoe) o una dirección de correo electrónico (johndoe@example.com). No debe ser un valor que contenga un espacio, como el nombre de visualización de un usuario (John Doe).

importante

El valor del atributo Name de la etiqueta Attribute distingue entre mayúsculas y minúsculas. Debe establecerse en https://aws.amazon.com/SAML/Attributes/RoleSessionName con precisión.

<Attribute Name="https://aws.amazon.com/SAML/Attributes/RoleSessionName"> <AttributeValue>user-id-name</AttributeValue> </Attribute>

Atributo SessionDuration de SAML

(Opcional) Puede utilizar un elemento Attribute con el atributo Name establecido en https://aws.amazon.com/SAML/Attributes/SessionDuration". Este elemento contiene un elemento AttributeValue que especifica cuánto tiempo puede obtener acceso el usuario a la AWS Management Console antes de tener que solicitar credenciales temporales nuevas. El valor es un número entero que representa el número de segundos para la sesión. Este valor puede oscilar entre 900 segundos (15 minutos) y 43 200 segundos (12 horas). Si este atributo no está presente, las credenciales serán válidas durante una hora (el valor predeterminado del parámetro DurationSeconds de la API AssumeRoleWithSAML).

Para utilizar este atributo, debe configurar el proveedor SAML para que proporcione un acceso de inicio de sesión único a la AWS Management Console a través del punto de enlace web de inicio de sesión de la consola en https://region-code.signin.aws.amazon.com/saml. Para obtener una lista de los posibles valores de region-code, consulte la columna Region (Región) en Puntos de conexión de inicio de sesión de AWS. Opcionalmente, puede utilizar la siguiente URL: https://signin.aws.amazon.com/static/saml. Tenga en cuenta que este atributo amplía las sesiones únicamente en la AWS Management Console. No puede ampliar la duración de otras credenciales. Sin embargo, si está presente en una llamada a la API AssumeRoleWithSAML, se puede utilizar para acortar la duración de la sesión. La duración predeterminada de las credenciales devueltas por la llamada es de 60 minutos.

Además, tenga en cuenta que si se ha definido también un atributo SessionNotOnOrAfter, el valor inferior de los dos atributos, SessionDuration o SessionNotOnOrAfter, establecerá la duración máxima de la sesión de la consola.

Si habilita sesiones de consola con una duración ampliada, aumenta el riesgo de que las credenciales se filtren. Para mitigar este riesgo, puede desactivar inmediatamente las sesiones de consola activas de cualquier rol si elige Revoke Sessions en la página Role Summary de la consola de IAM. Para obtener más información, consulte Revocación de las credenciales de seguridad temporales de un rol de IAM.

importante

El valor del atributo Name de la etiqueta Attribute distingue entre mayúsculas y minúsculas. Debe establecerse en https://aws.amazon.com/SAML/Attributes/SessionDuration con precisión.

<Attribute Name="https://aws.amazon.com/SAML/Attributes/SessionDuration"> <AttributeValue>1800</AttributeValue> </Attribute>

Atributo SourceIdentity de SAML

(Opcional) Puede utilizar un elemento Attribute con el atributo Name establecido en https://aws.amazon.com/SAML/Attributes/SourceIdentity. Este elemento contiene un AttributeValue elemento que proporciona un identificador para la persona o aplicación que utiliza un rol de IAM. El valor de la identidad de origen persiste cuando se utiliza la sesión de SAML para asumir otro rol en AWS conocido como Encadenamiento de roles. El valor de la identidad de origen está presente en la solicitud para cada acción realizada durante la sesión de rol. El valor que se establece no se puede cambiar durante la sesión de rol. A continuación, los administradores pueden utilizar registros de AWS CloudTrail para monitorear y auditar la información de identidad de origen para determinar quién realizó acciones con roles compartidos.

El valor del elemento AttributeValue debe tener entre 2 y 64 caracteres, solo puede contener caracteres alfanuméricos, guiones bajos y los siguientes caracteres: . , + = @ - (guion). No puede contener espacios. El valor suele ser un atributo asociado con el usuario, como un ID de usuario (johndoe) o una dirección de correo electrónico (johndoe@example.com). No debe ser un valor que contenga un espacio, como el nombre de visualización de un usuario (John Doe). Para obtener más información acerca de las identidades de fuente, consulte Monitorear y controlar las acciones realizadas con roles asumidos.

importante

Si la aserción SAML está configurada para utilizar el atributo SourceIdentity, la política de confianza también debe incluir la acción sts:SetSourceIdentity, de otro modo, la operación de rol asumido fallará. Para obtener más información acerca de las identidades de fuente, consulte Monitorear y controlar las acciones realizadas con roles asumidos.

Para pasar un atributo de identidad de origen, incluya el elemento AttributeValue que especifica el valor de la identidad de origen. Por ejemplo, para pasar la identidad de origen DiegoRamirez utilice el atributo siguiente.

<Attribute Name="https://aws.amazon.com/SAML/Attributes/SourceIdentity"> <AttributeValue>DiegoRamirez</AttributeValue>

Mapeo de atributos SAML con claves de contexto de una política de confianza de AWS

En las tablas de esta sección se enumeran los atributos SAML utilizados con más frecuencia y se muestra su correspondencia con las claves de contexto de condición de una política de confianza de AWS. Puede utilizar estas claves para controlar el acceso a un rol. Para ello, compare las claves con los valores que se incluyen en las aserciones que acompañan a una solicitud de acceso SAML.

importante

Estas claves solo están disponibles en las políticas de confianza de IAM (políticas que determinan quién puede asumir un rol) y no se pueden aplicar a políticas de permisos.

En la tabla de atributos eduPerson y eduOrg, los valores se indican como cadenas o como listas de cadenas. En el caso de los valores de cadenas, puede probar estos valores en las políticas de confianza de IAM utilizando las condiciones StringEquals o StringLike. En cuanto a los valores que contienen una lista de cadenas, puede utilizar los ForAnyValueoperadores de definición de políticasForAllValues y para probar los valores de las políticas de confianza.

nota

Debe incluir únicamente una notificación por clave de contexto de AWS. Si incluye más de una, solo se asignará una notificación.

En la siguiente tabla, se muestran los atributos eduPerson y eduOrg.

Atributo eduPerson o eduOrg (clave Name) Se asigna a esta clave de contexto de AWS (clave FriendlyName). Tipo

urn:oid:1.3.6.1.4.1.5923.1.1.1.1

eduPersonAffiliation

Lista de cadenas

urn:oid:1.3.6.1.4.1.5923.1.1.1.2

eduPersonNickname

Lista de cadenas

urn:oid:1.3.6.1.4.1.5923.1.1.1.3

eduPersonOrgDN

Cadena

urn:oid:1.3.6.1.4.1.5923.1.1.1.4

eduPersonOrgUnitDN

Lista de cadenas

urn:oid:1.3.6.1.4.1.5923.1.1.1.5

eduPersonPrimaryAffiliation

Cadena

urn:oid:1.3.6.1.4.1.5923.1.1.1.6

eduPersonPrincipalName

Cadena

urn:oid:1.3.6.1.4.1.5923.1.1.1.7

eduPersonEntitlement

Lista de cadenas

urn:oid:1.3.6.1.4.1.5923.1.1.1.8

eduPersonPrimaryOrgUnitDN

Cadena

urn:oid:1.3.6.1.4.1.5923.1.1.1.9

eduPersonScopedAffiliation

Lista de cadenas

urn:oid:1.3.6.1.4.1.5923.1.1.1.10

eduPersonTargetedID

Lista de cadenas

urn:oid:1.3.6.1.4.1.5923.1.1.1.11

eduPersonAssurance

Lista de cadenas

urn:oid:1.3.6.1.4.1.5923.1.2.1.2

eduOrgHomePageURI

Lista de cadenas

urn:oid:1.3.6.1.4.1.5923.1.2.1.3

eduOrgIdentityAuthNPolicyURI

Lista de cadenas

urn:oid:1.3.6.1.4.1.5923.1.2.1.4

eduOrgLegalName

Lista de cadenas

urn:oid:1.3.6.1.4.1.5923.1.2.1.5

eduOrgSuperiorURI

Lista de cadenas

urn:oid:1.3.6.1.4.1.5923.1.2.1.6

eduOrgWhitePagesURI

Lista de cadenas

urn:oid:2.5.4.3

cn

Lista de cadenas

En la siguiente tabla, se muestran los atributos de Active Directory.

Atributo de AD Se asigna con esta clave de contexto AWS Tipo

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name

name

Cadena

http://schemas.xmlsoap.org/claims/CommonName

commonName

Cadena

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname

givenName

Cadena

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname

surname

Cadena

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress

mail

Cadena

http://schemas.microsoft.com/ws/2008/06/identity/claims/primarygroupsid

uid

Cadena

En la siguiente tabla, se muestran los atributos X.500.

Atributo X.500 Se asigna con esta clave de contexto AWS Tipo

2.5.4.3

commonName

Cadena

2.5.4.4

surname

Cadena

2.4.5.42

givenName

Cadena

2.5.4.45

x500UniqueIdentifier

Cadena

0.9.2342.19200300100.1.1

uid

Cadena

0.9.2342.19200300100.1.3

mail

Cadena

0.9.2342.19200300.100.1.45

organizationStatus

Cadena