Saltar al contenido principal
Con Amazon Web Services (AWS) Session Tags, puede etiquetar recursos y asignar pares clave-valor a los usuarios, lo que le permite implementar el control de acceso basado en roles (RBAC) para las API y los recursos de AWS. En el ejemplo incluido en esta guía, etiquetaremos nuestros recursos de AWS con AWS Session Tags y luego crearemos una política para un rol de AWS IAM que permitirá a los usuarios con este rol y las etiquetas adecuadas realizar acciones específicas sobre nuestros recursos de AWS. Después, crearemos una rule en Auth0 que asociará nuestro rol de AWS IAM y las AWS Session Tags adecuadas a un usuario de Auth0, y las transmitirá en el token mediante aserciones de . Este ejemplo se basa en el que se proporciona en Configurar Amazon Web Services para inicio de sesión único. Para usar AWS Session Tags con las API y los recursos de AWS, debe:
  1. Etiquetar instancias de AWS.
  2. Crear un rol especializado de AWS IAM.
  3. Crear una rule de Auth0.
  4. Probar la configuración.

Requisitos previos

Etiquete las instancias de AWS

Añada etiquetas a sus recursos de AWS. Siga las instrucciones de Amazon Elastic Compute Cloud: Tag your Amazon EC2 resources. Debería haber creado tres instancias. Añada las siguientes etiquetas:
InstanciaEtiquetas
1Clave: CostCenter, Valor: marketing.
Clave: Project, Valor: website.
2Clave: CostCenter, Valor: engineering.
Clave: Project, Valor: management_dashboard.
3Clave: CostCenter, Valor: marketing.
Clave: Project, Valor: community_site.

Crear un rol especializado de AWS IAM

Cree un rol de IAM mediante el de AWS para SAML que configuró durante los requisitos previos. Siga las instrucciones de AWS Identity and Access Management User Guide: Creating a Role for SAML 2.0 Federation (Console). Mientras configura el rol, asegúrese de usar los siguientes parámetros:
ParámetroDescripción y valor de ejemplo
Proveedor SAMLNombre del proveedor de identidad que creó en los requisitos previos, por ejemplo, auth0SamlProvider. Seleccione Permitir acceso mediante programación y a AWS Management Console.
Cuando se le solicite Attach permissions policies, cree una política con el siguiente JSON y asígnele el nombre VirtualMachineAccessByCostCenter.
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:StartInstances",
                "ec2:StopInstances"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "ec2:ResourceTag/CostCenter": "<%= "${aws:PrincipalTag/CostCenter}" %>"
                }
            }
        }
    ]
}
Una vez creada la política, actualiza la lista de políticas del rol y, a continuación, filtra y selecciona la nueva política. Al revisar la configuración, asegúrate de usar los siguientes parámetros:
ParámetroDescripción
Nombre del rolNombre descriptivo del rol, como AccessByCostCenter.
Descripción del rolDescripción del propósito para el que se usa el rol.

Crear una rule de Auth0

Para asignar el rol y las etiquetas de AWS a un usuario, deberás crear una rule en Auth0. Estos valores se pasarán luego en las aserciones SAML del token. Por ejemplo:
Reemplaza el valor de la variable awsAccount por tu propio número de cuenta.
function(user, context, callback) {
  var awsAccount = '013823792818';
  var rolePrefix = `arn:aws:iam::` + awsAccount; 
  var samlIdP = rolePrefix + `:saml-provider/auth0SamlProvider`;

  user.awsRole = rolePrefix + `:role/AccessByCostCenter,` + samlIdP;
  user.awsRoleSession = user.email;
  user.awsTagKeys = ['CostCenter', 'Project'];
  user.CostCenter = 'marketing';
  user.Project = 'website';

  context.samlConfiguration.mappings = {
    'https://aws.amazon.com/SAML/Attributes/Role': 'awsRole',
    'https://aws.amazon.com/SAML/Attributes/RoleSessionName': 'awsRoleSession',
    'https://aws.amazon.com/SAML/Attributes/PrincipalTag:CostCenter': 'CostCenter',
    'https://aws.amazon.com/SAML/Attributes/PrincipalTag:Project': 'Project'
  };

  callback(null, user, context);
}

Probar la configuración

Ahora ya debería poder iniciar sesión en la consola de AWS con un usuario de Auth0 y probar su implementación. Para iniciar sesión, necesitará la URL de inicio de sesión de para la consola de AWS. Para encontrarla:
  1. Vaya a Dashboard > Applications > Applications y seleccione el nombre de la aplicación para verla.
  2. En la pestaña Addons, habilite el complemento SAML2 Web App.
  3. En la pestaña Usage, localice Identity Provider Login URL.
  4. Vaya a la URL indicada.
  5. Una vez que haya iniciado sesión, en EC2, seleccione Instances. Haga clic en una de las instancias etiquetadas con un CostCenter de marketing y haga clic en Actions > Instance State > Stop. Observe que la acción se completa correctamente.
  6. Haga clic en la instancia etiquetada con un CostCenter de engineering y haga clic en Actions > Instance State > Stop. Observe que la acción falla y muestra un error.

Más información