Administración de acceso de IAM - Amazon SageMaker

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.

Administración de acceso de IAM

En las siguientes secciones se describen los requisitos AWS Identity and Access Management (de IAM) para Amazon SageMaker Model Building Pipelines. Para ver un ejemplo de cómo puede implementar estos permisos, consulte Requisitos previos.

Permisos de rol de canalización

Su canalización requiere una función de ejecución de la canalización de IAM que se transfiere a SageMaker Pipelines al crear una canalización. El rol de la SageMaker instancia que está creando la canalización debe tener el iam:PassRole permiso para la función de ejecución de la canalización para poder pasarla. Para obtener más información sobre las funciones de IAM, consulte Funciones de IAM.

El rol de ejecución de la canalización requiere los siguientes permisos:

  • Para transferir cualquier rol a un SageMaker trabajo dentro de una canalización, el iam:PassRole permiso del rol que se está transfiriendo. 

  • Los permisos Create y Describe para cada uno de los tipos de trabajo de la canalización.

  • Permisos de Amazon S3 para utilizar la función JsonGet. Puede controlar el acceso a los recursos de Amazon S3 a través de una política basada en identidades o una política basada en recursos. Se aplica una política basada en recursos a su bucket de Amazon S3 y concede a SageMaker Pipelines acceso al bucket. Una política basada en identidades permite a la canalización realizar llamadas a Amazon S3 desde su cuenta. Para obtener más información acerca de las políticas de acceso basadas en recursos, consulte Políticas basadas en identidad y políticas basadas en recursos.

    { "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::<your-bucket-name>/*", "Effect": "Allow" }

Permisos de paso de canalización

SageMaker Las canalizaciones incluyen pasos que ejecutan los trabajos. SageMaker Para que los pasos de la canalización ejecuten estos trabajos, requieren un rol de IAM en la cuenta que proporcione acceso al recurso necesario. Tu canalización transfiere esta función SageMaker al director del servicio. Para obtener más información acerca de los roles de IAM, consulte Roles de IAM.

De forma predeterminada, cada paso asume el rol de ejecución de la canalización. Si lo desea, puede transferir un rol diferente a cualquiera de los pasos de su canalización. Esto garantiza que el código de cada paso no pueda afectar a los recursos utilizados en otros pasos, a menos que exista una relación directa entre los dos pasos especificados en la definición de la canalización. Estos roles se asignan al definir el procesador o el estimador de su paso. Para ver ejemplos de cómo incluir estos roles en estas definiciones, consulta la documentación del SDK de SageMaker Python.

Personalice la administración de acceso para los trabajos de SageMaker Pipelines

Puede personalizar aún más sus políticas de IAM para que los miembros seleccionados de su organización puedan ejecutar todos los pasos de la canalización o cualquiera de ellos. Por ejemplo, puede conceder permiso a determinados usuarios para crear trabajos de entrenamiento, conceder permisos a otro grupo de usuarios para crear trabajos de procesamiento y conceder permisos a todos tus usuarios permiso para ejecutar el resto de pasos. Para usar esta característica, seleccione una cadena personalizada como prefijo al nombre del trabajo. El administrador antepone el prefijo a los ARN permitidos, mientras que el científico de datos incluye este prefijo en las instancias de canalización. Como la política de IAM para los usuarios permitidos contiene un ARN de trabajo con el prefijo especificado, los trabajos posteriores de su paso de canalización cuentan con los permisos necesarios para continuar. El prefijo de trabajo está desactivado de forma predeterminada; debe activar esta opción en su clase Pipelinepara usarla.

Para los trabajos con el prefijo desactivado, el nombre del trabajo tiene el formato que se muestra y es una concatenación de los campos que se describen en la siguiente tabla:

pipelines-<executionId>-<stepNamePrefix>-<entityToken>-<failureCount>

Campo Definición

pipelines

Siempre se antepone una cadena estática. Esta cadena identifica el servicio de orquestación de canalizaciones como el origen del trabajo.

executionId

Un búfer aleatorio para la instancia en ejecución de la canalización.

paso NamePrefix

El nombre del paso especificado por el usuario (indicado en el argumento name del paso de canalización), limitado a los primeros 20 caracteres.

entityToken

Un token aleatorio para garantizar la idempotencia de la entidad de paso.

failureCount

El número actual de reintentos que han tenido lugar para completar el trabajo.

En este caso, no se agrega ningún prefijo personalizado al nombre del trabajo y la política de IAM correspondiente debe coincidir con esta cadena.

Para los usuarios que activan el prefijo de trabajo, el nombre del trabajo subyacente adopta el siguiente formato, con el prefijo personalizado especificado como MyBaseJobName:

< MyBase JobName > - <executionId>- <entityToken>- <failureCount>

El prefijo personalizado reemplaza a la pipelines cadena estática para ayudarte a reducir la selección de usuarios que pueden ejecutar el SageMaker trabajo como parte de una canalización.

Restricciones de longitud del prefijo

Los nombres de los trabajos tienen restricciones de longitud internas específicas para cada paso de la canalización. Esta restricción también limita la longitud del prefijo permitido. Los requisitos de longitud de los prefijos son los siguientes:

Aplicación de prefijos de trabajo a una política de IAM

El administrador crea políticas de IAM que permiten a los usuarios de prefijos específicos crear trabajos. El siguiente ejemplo de política permite a los científicos de datos crear trabajos de entrenamiento si utilizan el prefijo MyBaseJobName.

{ "Action": "sagemaker:CreateTrainingJob", "Effect": "Allow", "Resource": [ "arn:aws:sagemaker:region:account-id:*/MyBaseJobName-*" ] }

Aplicación de prefijos de trabajo a las instancias de canalización

El prefijo se especifica con el argumento *base_job_name de la clase de instancia del trabajo.

nota

Debe pasar el prefijo de trabajo con el argumento *base_job_name a la instancia de trabajo antes de crear un paso de canalización. Esta instancia de trabajo contiene la información necesaria para que el trabajo se ejecute como un paso de una canalización. Este argumento varía en función de la instancia de trabajo utilizada. En la siguiente lista se muestra el argumento que se debe utilizar para cada tipo de paso de la canalización:

En el siguiente ejemplo se muestra cómo especificar un prefijo para una nueva instancia de trabajo de entrenamiento.

# Create a job instance xgb_train = Estimator( image_uri=image_uri, instance_type="ml.m5.xlarge", instance_count=1, output_path=model_path, role=role, subnets=["subnet-0ab12c34567de89f0"], base_job_name="MyBaseJobName" security_group_ids=["sg-1a2bbcc3bd4444e55"], tags = [ ... ] encrypt_inter_container_traffic=True, ) # Attach your job instance to a pipeline step step_train = TrainingStep( name="TestTrainingJob", estimator=xgb_train, inputs={ "train": TrainingInput(...), "validation": TrainingInput(...) } )

El prefijo del trabajo está desactivado de forma predeterminada. Para activar esta característica, utilice la opción use_custom_job_prefix de PipelineDefinitionConfig, tal como se muestra en el siguiente fragmento:

from sagemaker.workflow.pipeline_definition_config import PipelineDefinitionConfig # Create a definition configuration and toggle on custom prefixing definition_config = PipelineDefinitionConfig(use_custom_job_prefix=True); # Create a pipeline with a custom prefix pipeline = Pipeline( name="MyJobPrefixedPipeline", parameters=[...] steps=[...] pipeline_definition_config=definition_config )

Cree y ejecute su canalización. En el siguiente ejemplo, se crea y ejecuta una canalización, y también se muestra cómo desactivar los prefijos de trabajo y volver a ejecutar la canalización.

pipeline.create(role_arn=sagemaker.get_execution_role()) # Optionally, call definition() to confirm your prefixed job names are in the built JSON pipeline.definition() pipeline.start() # To run a pipeline without custom-prefixes, toggle off use_custom_job_prefix, update the pipeline # via upsert() or update(), and start a new run definition_config = PipelineDefinitionConfig(use_custom_job_prefix=False) pipeline.pipeline_definition_config = definition_config pipeline.update() execution = pipeline.start()

Del mismo modo, puede activar la característica para las canalizaciones existentes e iniciar una nueva ejecución que utilice prefijos de trabajo.

definition_config = PipelineDefinitionConfig(use_custom_job_prefix=True) pipeline.pipeline_definition_config = definition_config pipeline.update() execution = pipeline.start()

Por último, para ver su trabajo con un prefijo personalizado, llame a list_steps en la ejecución de la canalización.

steps = execution.list_steps() prefixed_training_job_name = steps['PipelineExecutionSteps'][0]['Metadata']['TrainingJob']['Arn']

Políticas de control de servicios con canalizaciones

Las políticas de control de servicios (SCP) son un tipo de política de organización que puede utilizar para administrar permisos en su organización. Las políticas de control de servicios (SCP) permiten un control centralizado de los máximos permisos disponibles para todas las cuentas de la organización. Al utilizar SageMaker Pipelines en su organización, puede asegurarse de que los científicos de datos gestionen las ejecuciones de sus canalizaciones sin tener que interactuar con la AWS consola. 

Si utiliza una VPC con su SCP que restringe el acceso a Amazon S3, debe tomar medidas para permitir que su canalización acceda a otros recursos de Amazon S3.

Para permitir que SageMaker Pipelines acceda a Amazon S3 fuera de su VPC con JsonGet la función, actualice el SCP de su organización para garantizar que el rol que SageMaker usa Pipelines pueda acceder a Amazon S3. Para ello, cree una excepción para las funciones que utilice el ejecutor de SageMaker Pipelines a través de la función de ejecución de la canalización mediante una etiqueta principal y una clave de condición.

Para permitir que SageMaker Pipelines acceda a Amazon S3 fuera de su VPC
  1. Cree una etiqueta única para su rol de ejecución de la canalización según los pasos de Etiquetado de usuarios y roles de IAM.

  2. Conceda una excepción en su SCP utilizando la clave de condición Aws:PrincipalTag IAM de la etiqueta que ha creado. Para obtener más información, consulte Creación, actualización y eliminación de políticas de control de servicios.