Logotipo de Zephyrnet

Incorpore usuarios a Amazon SageMaker Studio con roles de IAM específicos del grupo de Active Directory | Servicios web de Amazon

Fecha:

Estudio Amazon SageMaker es un entorno de desarrollo integrado (IDE) basado en la web para el aprendizaje automático (ML) que le permite crear, entrenar, depurar, implementar y monitorear sus modelos de ML. Para aprovisionar Studio en su cuenta y región de AWS, primero debe crear un Amazon SageMaker dominio: una construcción que encapsula su entorno de ML. Más concretamente, un dominio de SageMaker consta de un dominio asociado Sistema de archivos elástico de Amazon (Amazon EFS), una lista de usuarios autorizados y una variedad de seguridad, aplicaciones, políticas y Nube privada virtual de Amazon (Amazon VPC) configuraciones.

Al crear su dominio de SageMaker, puede optar por utilizar Centro de identidad de AWS IAM (sucesor del inicio de sesión único de AWS) o Gestión de identidades y accesos de AWS (IAM) para métodos de autenticación de usuario. Ambos métodos de autenticación tienen su propio conjunto de casos de uso; En esta publicación, nos centramos en los dominios de SageMaker con el Centro de identidad de IAM o el modo de inicio de sesión único (SSO) como método de autenticación.

Con el modo SSO, configura un usuario y un grupo de SSO en IAM Identity Center y luego otorga acceso al grupo o usuario de SSO desde la consola de Studio. Actualmente, todos los usuarios de SSO en un dominio heredan el rol de ejecución del dominio. Es posible que esto no funcione para todas las organizaciones. Por ejemplo, es posible que los administradores deseen configurar permisos de IAM para un usuario de SSO de Studio en función de su pertenencia al grupo de Active Directory (AD). Además, debido a que los administradores deben otorgar manualmente a los usuarios de SSO acceso a Studio, es posible que el proceso no se escale cuando se incorporan cientos de usuarios.

En esta publicación, proporcionamos una guía prescriptiva para la solución para aprovisionar a los usuarios de SSO en Studio con permisos de privilegios mínimos en función de la pertenencia al grupo de AD. Esta guía le permite escalar rápidamente para incorporar cientos de usuarios a Studio y lograr su postura de seguridad y cumplimiento.

Resumen de la solución

El siguiente diagrama ilustra la arquitectura de la solución.

El flujo de trabajo para aprovisionar usuarios de AD en Studio incluye los siguientes pasos:

  1. Establece una Dominio de Studio en modo SSO.
  2. Para cada grupo de AD:
    1. Configure su función de ejecución de Studio con las políticas de IAM detalladas adecuadas
    2. Registrar una entrada en el mapeo de roles de grupo de AD Amazon DynamoDB mesa.

    Como alternativa, puede adoptar un estándar de nomenclatura para los ARN de funciones de IAM en función del nombre del grupo de AD y derivar el ARN de funciones de IAM sin necesidad de almacenar la asignación en una base de datos externa.

  3. Sincronice sus usuarios, grupos y membresías de AD con AWS Identity Center:
    1. Si utiliza un proveedor de identidad (IdP) compatible con SCIM, utilice la integración de la API de SCIM con IAM Identity Center.
    2. Si utiliza AD autogestionado, puede utilizar AD Connector.
  4. Cuando se crea el grupo AD en su AD corporativo, complete los siguientes pasos:
    1. Cree un grupo SSO correspondiente en IAM Identity Center.
    2. Asocie el grupo de SSO al dominio de Studio mediante la consola de SageMaker.
  5. Cuando se crea un usuario de AD en su AD corporativo, se crea un usuario de SSO correspondiente en IAM Identity Center.
  6. Cuando el usuario de AD se asigna a un grupo de AD, una API del centro de identidad de IAM (Crear membresía de grupo) se invoca y se crea la pertenencia al grupo SSO.
  7. El evento anterior está registrado Seguimiento de la nube de AWS con el nombre AddMemberToGroup.
  8. An Puente de eventos de Amazon regla escucha los eventos de CloudTrail y coincide con el AddMemberToGroup patrón de regla
  9. La regla EventBridge activa el objetivo AWS Lambda función.
  10. Esta función de Lambda devolverá la llamada a las API del centro de identidad de IAM, obtendrá la información del usuario y del grupo de SSO y realizará los siguientes pasos para crear el perfil de usuario de Studio (Crear perfil de usuario) para el usuario de SSO:
    1. Busque la tabla de DynamoDB para obtener el rol de IAM correspondiente al grupo de AD.
    2. Cree un perfil de usuario con el usuario de SSO y el rol de IAM obtenido de la tabla de búsqueda.
    3. El usuario de SSO tiene acceso a Studio.
  11. El usuario de SSO se redirige al IDE de Studio a través de la URL del dominio de Studio.

Tenga en cuenta que, en el momento de escribir este artículo, el paso 4b (asociar el grupo de SSO al dominio de Studio) debe realizarlo manualmente un administrador mediante la consola de SageMaker en el nivel de dominio de SageMaker.

Configure una función Lambda para crear los perfiles de usuario

La solución utiliza una función Lambda para crear los perfiles de usuario de Studio. Proporcionamos la siguiente función Lambda de muestra que puede copiar y modificar para satisfacer sus necesidades de automatización de la creación del perfil de usuario de Studio. Esta función realiza las siguientes acciones:

  1. Recibir el CloudTrail AddMemberToGroup evento de EventBridge.
  2. Recuperar el estudio DOMAIN_ID de la variable de entorno (alternativamente, puede codificar el ID de dominio o usar una tabla de DynamoDB también si tiene varios dominios).
  3. Lea de una tabla de marcado ficticia para hacer coincidir los usuarios de AD con los roles de ejecución. Puede cambiar esto para obtener de la tabla de DynamoDB si está utilizando un enfoque basado en tablas. Si usa DynamoDB, el rol de ejecución de su función Lambda también necesita permisos para leer de la tabla.
  4. Recupere la información de membresía del grupo AD y del usuario de SSO del Centro de identidad de IAM, en función de los datos de eventos de CloudTrail.
  5. Cree un perfil de usuario de Studio para el usuario de SSO, con los detalles de SSO y el rol de ejecución coincidente.
import os
import json
import boto3
DOMAIN_ID = os.environ.get('DOMAIN_ID', 'd-xxxx') def lambda_handler(event, context): print({"Event": event}) client = boto3.client('identitystore') sm_client = boto3.client('sagemaker') event_detail = event['detail'] group_response = client.describe_group( IdentityStoreId=event_detail['requestParameters']['identityStoreId'], GroupId=event_detail['requestParameters']['groupId'], ) group_name = group_response['DisplayName'] user_response = client.describe_user( IdentityStoreId=event_detail['requestParameters']['identityStoreId'], UserId=event_detail['requestParameters']['member']['memberId'] ) user_name = user_response['UserName'] print(f"Event details: {user_name} has been added to {group_name}") mapping_dict = { "ad-group-1": "<execution-role-arn>", "ad-group-2": "<execution-role-arn>” } user_role = mapping_dict.get(group_name) if user_role: response = sm_client.create_user_profile( DomainId=DOMAIN_ID, SingleSignOnUserIdentifier="UserName", SingleSignOnUserValue=user_name, # if the SSO user_name value is an email, # add logic to handle it since Studio user profiles don’t accept @ character UserProfileName=user_name, UserSettings={ "ExecutionRole": user_role } ) print(response) else: response = "Group is not authorized to use SageMaker. Doing nothing." print(response) return { 'statusCode': 200, 'body': json.dumps(response) }

Tenga en cuenta que, de forma predeterminada, el rol de ejecución de Lambda no tiene acceso para crear perfiles de usuario ni enumerar usuarios de SSO. Después de crear la función Lambda, acceda al rol de ejecución de la función en IAM y adjunte la siguiente política como una política en línea después de reducir el alcance según sea necesario según los requisitos de su organización.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "identitystore:DescribeGroup", "identitystore:DescribeUser" ], "Effect": "Allow", "Resource": "*" }, { "Action": "sagemaker:CreateUserProfile", "Effect": "Allow", "Resource": "*" }, { "Action": "iam:PassRole", "Effect": "Allow", "Resource": [ "<list-of-studio-execution-roles>" ] } ]
}

Configurar la regla de EventBridge para el evento de CloudTrail

EventBridge es un servicio de bus de eventos sin servidor que puede usar para conectar sus aplicaciones con datos de una variedad de fuentes. En esta solución, creamos un disparador basado en reglas: EventBridge escucha eventos y coincide con el patrón proporcionado y dispara una función Lambda si la coincidencia del patrón es exitosa. Como se explica en la descripción general de la solución, escuchamos las AddMemberToGroup evento. Para configurarlo, complete los siguientes pasos:

  1. En la consola de EventBridge, elija Reglas en el panel de navegación.
  2. Elige Crear regla.
  3. Proporcione un nombre de regla, por ejemplo, AddUserToADGroup.
  4. Opcionalmente, ingrese una descripción.
  5. Seleccione tu préstamo estudiantil para el autobús del evento.
  6. under Tipo de regla, escoger Regla con un patrón de evento, A continuación, elija Siguiente.
  7. En Crear patrón de eventos página, elige origen del evento as Eventos de AWS o eventos de socios de EventBridge.
  8. under Patrón de evento, elegir la Patrones personalizados (editor JSON) tab e ingrese el siguiente patrón:
    { "source": ["aws.sso-directory"], "detail-type": ["AWS API Call via CloudTrail"], "detail": { "eventSource": ["sso-directory.amazonaws.com"], "eventName": ["AddMemberToGroup"] }
    }

  9. Elige Siguiente.
  10. En Seleccionar objetivo(s) página, elija el servicio de AWS para el tipo de destino, la función Lambda como el destino y la función que creó anteriormente, luego elija Siguiente.
  11. Elige Siguiente en Configurar etiquetas página, luego elija Crear regla en Revisar y crear .

Después de configurar la función Lambda y la regla EventBridge, puede probar esta solución. Para hacerlo, abra su IdP y agregue un usuario a uno de los grupos de AD con el rol de ejecución de Studio asignado. Una vez que agrega el usuario, puede verificar los registros de la función Lambda para inspeccionar el evento y también ver el usuario de Studio aprovisionado automáticamente. Además, puede utilizar el Describir perfil de usuario Llamada API para verificar que el usuario se crea con los permisos adecuados.

Compatibilidad con varias cuentas de Studio

Para admitir varias cuentas de Studio con la arquitectura anterior, recomendamos los siguientes cambios:

  1. Configure un grupo de AD asignado a cada nivel de cuenta de Studio.
  2. Configure un rol de IAM a nivel de grupo en cada cuenta de Studio.
  3. Configure o derive el grupo a la asignación de roles de IAM.
  4. Configurar una función Lambda para realizar suposición de roles entre cuentas, basado en el ARN de asignación de funciones de IAM y el perfil de usuario creado.

Desaprovisionamiento de usuarios

Cuando se elimina un usuario de su grupo de AD, también debe eliminar su acceso del dominio de Studio. Con SSO, cuando se elimina un usuario, el usuario se deshabilita en el Centro de identidad de IAM automáticamente si la sincronización de AD con el Centro de identidad de IAM está en su lugar, y su acceso a la aplicación de Studio se revoca de inmediato.

Sin embargo, el perfil de usuario en Studio aún persiste. Puede agregar un flujo de trabajo similar con CloudTrail y una función de Lambda para eliminar el perfil de usuario de Studio. El disparador de EventBridge ahora debe escuchar el Eliminar Membresía de Grupo evento. En la función Lambda, complete los siguientes pasos:

  1. Obtenga el nombre de perfil de usuario del ID de usuario y grupo.
  2. Enumere todas las aplicaciones en ejecución para el perfil de usuario usando el Lista de aplicaciones Llamada API, filtrando por el UserProfileNameEquals parámetro. Asegúrese de verificar la respuesta paginada, para enumerar todas las aplicaciones para el usuario.
  3. Elimine todas las aplicaciones en ejecución para el usuario y espere hasta que se eliminen todas las aplicaciones. Puedes usar el Describir aplicación API para ver el estado de la aplicación.
  4. Cuando todas las aplicaciones están en un Suprimido estado (o Fallidos), elimine el perfil de usuario.

Con esta solución implementada, los administradores de la plataforma ML pueden mantener membresías grupales en una ubicación central y automatizar la administración del perfil de usuario de Studio a través de las funciones EventBridge y Lambda.

El siguiente código muestra un evento de CloudTrail de muestra:

"AddMemberToGroup": { "eventVersion": "1.08", "userIdentity": { "type": "Unknown", "accountId": "<account-id>", "accessKeyId": "30997fec-b566-4b8b-810b-60934abddaa2" }, "eventTime": "2022-09-26T22:24:18Z", "eventSource": "sso-directory.amazonaws.com", "eventName": "AddMemberToGroup", "awsRegion": "us-east-1", "sourceIPAddress": "54.189.184.116", "userAgent": "Okta SCIM Client 1.0.0", "requestParameters": { "identityStoreId": "d-906716eb24", "groupId": "14f83478-a061-708f-8de4-a3a2b99e9d89", "member": { "memberId": "04c8e458-a021-702e-f9d1-7f430ff2c752" } }, "responseElements": null, "requestID": "b24a123b-afb3-4fb6-8650-b0dc1f35ea3a", "eventID": "c2c0873b-5c49-404c-add7-f10d4a6bd40c", "readOnly": false, "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "<account-id>", "eventCategory": "Management", "tlsDetails": { "tlsVersion": "TLSv1.2", "cipherSuite": "ECDHE-RSA-AES128-GCM-SHA256", "clientProvidedHostHeader": "up.sso.us-east-1.amazonaws.com" }
}

El siguiente código muestra una solicitud de API de perfil de usuario de Studio de muestra:

create-user-profile 
--domain-id d-xxxxxx 
--user-profile-name ssouserid
--single-sign-on-user-identifier 'userName' 
--single-sign-on-user-value 'ssouserid‘ 
--user-settings ExecutionRole=arn:aws:iam::<account id>:role/name

Conclusión

En esta publicación, discutimos cómo los administradores pueden escalar la incorporación de Studio para cientos de usuarios en función de su membresía en el grupo AD. Demostramos una arquitectura de solución integral que las organizaciones pueden adoptar para automatizar y escalar su proceso de incorporación para satisfacer sus necesidades de agilidad, seguridad y cumplimiento. Si está buscando una solución escalable para automatizar la incorporación de sus usuarios, pruebe esta solución y deje sus comentarios a continuación. Para obtener más información sobre la incorporación a Studio, consulte Incorporación al dominio de Amazon SageMaker.


Sobre los autores

carnero vital es un arquitecto de soluciones especialista en ML en AWS. Tiene más de 20 años de experiencia en la arquitectura y creación de aplicaciones distribuidas, híbridas y en la nube. Le apasiona crear soluciones seguras y escalables de AI/ML y big data para ayudar a los clientes empresariales con su proceso de optimización y adopción de la nube para mejorar sus resultados comerciales. En su tiempo libre, monta su motocicleta y camina con su ovejita de 2 años.

Durga Sury es Arquitecto de soluciones de aprendizaje automático en el equipo de Amazon SageMaker Service SA. Le apasiona hacer que el aprendizaje automático sea accesible para todos. En sus 4 años en AWS, ayudó a configurar plataformas de IA/ML para clientes empresariales. Cuando no está trabajando, le encantan los paseos en motocicleta, las novelas de misterio y las caminatas con su husky de 5 años.

punto_img

Información más reciente

punto_img