IAMGestión de acceso - 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.

IAMGestión de acceso

En las siguientes secciones se describen los requisitos AWS Identity and Access Management (IAM) de Amazon SageMaker 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 IAM canalización que se transfiere a 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 IAM las funciones, consulte IAMFunciones.

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 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

Las canalizaciones incluyen pasos que ejecutan los trabajos. SageMaker Para que los pasos de la canalización ejecuten estos trabajos, es necesario tener un IAM rol en tu cuenta que proporcione acceso al recurso necesario. Tu canalización transfiere esta función SageMaker al director de servicio. Para obtener más información sobre IAM las funciones, consulta IAMFunciones.

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 SDKdocumentación de SageMaker Python.

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

Puedes personalizar aún más tus IAM políticas para que los miembros seleccionados de tu organización puedan ejecutar alguno o todos los pasos del proceso. 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 lo permitidoARNs, mientras que el científico de datos incluye este prefijo en las instancias de canalización. Como la IAM política de usuarios permitidos contiene un trabajo ARN con el prefijo especificado, los trabajos posteriores de tu paso en proceso 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.

stepNamePrefix

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 añade ningún prefijo personalizado al nombre del trabajo y la IAM política 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:

<MyBaseJobName>-<executionId>-<entityToken>-<failureCount>

El prefijo personalizado reemplaza a la pipelines cadena estática para ayudarle 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:

Aplica prefijos de trabajo a una política IAM

Tu administrador crea IAM políticas que permiten a los usuarios de prefijos específicos crear puestos de trabajo. 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 (SCPs) son un tipo de política organizacional que puedes usar para administrar los permisos en tu organización. SCPsofrecen un control central sobre el número máximo de permisos disponibles para todas las cuentas de su organización. Al utilizar Pipelines en su organización, puede asegurarse de que los científicos de datos gestionen las ejecuciones de sus pipelines sin tener que interactuar con la AWS consola. 

Si utiliza un VPC elemento 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 Pipelines acceda a Amazon S3 fuera del suyo VPC con la JsonGet función, actualice la de su organización SCP para asegurarse de que el rol que usa Pipelines pueda acceder a Amazon S3. Para ello, cree una excepción para las funciones que utilice el ejecutor de 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 Pipelines acceda a Amazon S3 fuera de su VPC
  1. Cree una etiqueta única para su función de ejecución de canalización siguiendo los pasos que se indican en Etiquetar IAM usuarios y funciones.

  2. Haz una excepción al SCP usar la clave de Aws:PrincipalTag IAM condición de la etiqueta que has creado. Para obtener más información, consulte Creación, actualización y eliminación de políticas de control de servicios.