Seguridad y permisos
Al consultar datos de Athena o Amazon Redshift, los conjuntos de datos consultados se almacenan automáticamente en el bucket predeterminado de S3 de SageMaker para la región de AWS en la que utilice Studio Classic. Además, cuando exporta un cuaderno de Jupyter desde Amazon SageMaker Data Wrangler y lo ejecuta, sus flujos de datos, o archivos .flow, se guardan en el mismo bucket predeterminado, con el prefijo data_wrangler_flows.
Para necesidades de seguridad de alto nivel, puede configurar una política de bucket que restrinja los roles de AWS que tienen acceso a este bucket predeterminado de S3 de SageMaker. Use la siguiente sección para agregar este tipo de política a un bucket de S3. Para seguir las instrucciones de esta página, utilice la AWS Command Line Interface (AWS CLI). Para obtener información al respecto, consulte Configuración de la AWS CLI en la Guía del usuario de IAM.
Además, debe conceder permisos a cada rol de IAM que utilice Data Wrangler para acceder a los recursos necesarios. Si no necesita permisos detallados para el rol de IAM que utiliza para acceder a Data Wrangler, puede añadir la política administrada de IAM, AmazonSageMakerFullAccess
Adición de una política de bucket para restringir el acceso a los conjuntos de datos importados a Data Wrangler
Puede agregar una política al bucket de S3 que contenga sus recursos de Data Wrangler mediante una política de bucket de Amazon S3. Entre los recursos que Data Wrangler carga en el bucket predeterminado de S3 de SageMaker en la región de AWS en la que utiliza Studio Classic se incluyen los siguientes:
-
Resultados de la consulta de Amazon Redshift. Se almacenan con el prefijo redshift/.
-
Resultados de la consulta de Athena. Se almacenan con el prefijo athena/.
-
Los archivos .flow que se cargan en Amazon S3 al ejecutar un cuaderno de Jupyter exportado que produce Data Wrangler. Se almacenan con el prefijo data_wrangler_flows/.
Utilice el siguiente procedimiento para crear una política de bucket de S3 que pueda agregar para restringir el acceso de los roles de IAM a ese bucket. Para obtener información acerca de cómo agregar una política a un bucket de S3, consulte How do I add an S3 Bucket policy?
Para configurar una política de bucket en el bucket de S3 que almacena sus recursos de Data Wrangler:
-
Configure uno o más roles de IAM que quiera que puedan acceder a Data Wrangler.
-
Abra un intérprete de comandos o símbolo del sistema. Para cada rol que cree, sustituya
role-name
por el nombre del rol y ejecute lo siguiente:$ aws iam get-role --role-name
role-name
En la respuesta, verá una cadena
RoleId
que comienza conAROA
. Copie esta cadena. -
Agregue la siguiente política al bucket predeterminado de SageMaker en la región de AWS en la que utilice Data Wrangler. Sustituya la
region
por la región de AWS en la que se encuentra el bucket y elaccount-id
por su ID de cuenta de AWS. Sustituya losuserId
que comiencen porAROAEXAMPLEID
por los ID de los roles de AWS a los que desee conceder permiso de uso de Data Wrangler.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": [ "arn:aws:s3:::sagemaker-
region
-account-id
/data_wrangler_flows/", "arn:aws:s3:::sagemaker-region
-account-id
/data_wrangler_flows/*", "arn:aws:s3:::sagemaker-region
-account-id
/athena", "arn:aws:s3:::sagemaker-region
-account-id
/athena/*", "arn:aws:s3:::sagemaker-region
-account-id
/redshift", "arn:aws:s3:::sagemaker-region
-account-id
/redshift/*" ], "Condition": { "StringNotLike": { "aws:userId": [ "AROAEXAMPLEID_1
:*", "AROAEXAMPLEID_2
:*" ] } } } ] }
Creación de una lista de permisos para Data Wrangler
Cada vez que un usuario comienza a ejecutar Data Wrangler desde la interfaz de usuario de Amazon SageMaker Studio Classic, hace una llamada a la interfaz de programación de aplicaciones (API) de SageMaker para crear una aplicación de Data Wrangler.
Es posible que su organización no otorgue permisos a los usuarios de forma predeterminada para realizar esas llamadas a la API. Para conceder permisos, tiene que crear y asociar una política a los roles de IAM del usuario mediante la siguiente plantilla de políticas: Ejemplo de lista de permisos de Data Wrangler
nota
El ejemplo de política anterior solo permite a sus usuarios acceder a la aplicación Data Wrangler.
Para obtener información acerca de la creación de una política, consulte Creating policies on the JSON tab. Cuando cree una política, copie y pegue la política JSON del Ejemplo de lista de permisos de Data Wrangler
importante
Elimine cualquier política de IAM que impida a los usuarios ejecutar las siguientes operaciones:
Si no elimina las políticas, es posible que los usuarios sigan afectados por ellas.
Después de crear la política con la plantilla, asóciela a los roles de IAM de los usuarios. Para obtener más información acerca de cómo asociar políticas, consulte Adición de permisos de identidad de IAM (consola).
Conceder permiso a un rol de IAM para que utilice Data Wrangler
Puede conceder un permiso a un rol de IAM para que utilice Data Wrangler con la política general administrada por IAM, AmazonSageMakerFullAccess
AmazonSageMakerFullAccess
para conceder acceso a Data Wrangler:
-
Si importa datos de Amazon Redshift, el nombre del Usuario de la base de datos debe tener el prefijo
sagemaker_access
. -
Esta política administrada solo otorga permiso para acceder a los buckets con uno de los siguientes nombres:
SageMaker
,SageMaker
,sagemaker
oaws-glue
. Si desea utilizar Data Wrangler para importar desde un bucket de S3 sin estas frases en el nombre, consulte la última sección de esta página para obtener información sobre cómo conceder permiso a una entidad de IAM para que acceda a sus buckets de S3.
Si necesita un alto nivel de seguridad, puede asociar las políticas de esta sección a una entidad de IAM para conceder los permisos necesarios para el uso de Data Wrangler.
Si tiene conjuntos de datos en Amazon Redshift o Athena que un rol de IAM necesita importar desde Data Wrangler, debe agregar una política a esa entidad para acceder a estos recursos. Las siguientes políticas son las más restrictivas que puede utilizar para conceder permiso a un rol de IAM para importar datos de Amazon Redshift y Athena.
Para obtener información acerca de cómo asociar una política personalizada a un rol de IAM, consulte Administración de políticas de IAM en la Guía del usuario de IAM.
Ejemplo de política para conceder acceso a la importación de un conjunto de datos de Athena
La siguiente política supone que el rol de IAM tiene permiso para acceder al bucket de S3 subyacente donde se almacenan los datos mediante una política de IAM independiente.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "athena:ListDataCatalogs", "athena:ListDatabases", "athena:ListTableMetadata", "athena:GetQueryExecution", "athena:GetQueryResults", "athena:StartQueryExecution", "athena:StopQueryExecution" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "glue:CreateTable" ], "Resource": [ "arn:aws:glue:*:*:table/*/sagemaker_tmp_*", "arn:aws:glue:*:*:table/sagemaker_featurestore/*", "arn:aws:glue:*:*:catalog", "arn:aws:glue:*:*:database/*" ] }, { "Effect": "Allow", "Action": [ "glue:DeleteTable" ], "Resource": [ "arn:aws:glue:*:*:table/*/sagemaker_tmp_*", "arn:aws:glue:*:*:catalog", "arn:aws:glue:*:*:database/*" ] }, { "Effect": "Allow", "Action": [ "glue:GetDatabases", "glue:GetTable", "glue:GetTables" ], "Resource": [ "arn:aws:glue:*:*:table/*", "arn:aws:glue:*:*:catalog", "arn:aws:glue:*:*:database/*" ] }, { "Effect": "Allow", "Action": [ "glue:CreateDatabase", "glue:GetDatabase" ], "Resource": [ "arn:aws:glue:*:*:catalog", "arn:aws:glue:*:*:database/sagemaker_featurestore", "arn:aws:glue:*:*:database/sagemaker_processing", "arn:aws:glue:*:*:database/default", "arn:aws:glue:*:*:database/sagemaker_data_wrangler" ] } ] }
Ejemplo de política para conceder acceso a la importación de un conjunto de datos de Amazon Redshift
La siguiente política concede permiso para configurar una conexión de Amazon Redshift con Data Wrangler mediante usuarios de bases de datos que tengan el prefijo sagemaker_access
en el nombre. Para conceder el permiso de conexión mediante usuarios de bases de datos adicionales, agregue entradas adicionales bajo "Resources"
en la siguiente política. La siguiente política supone que el rol de IAM tiene permiso para acceder al bucket de S3 subyacente donde se almacenan los datos mediante una política de IAM independiente, si corresponde.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "redshift-data:ExecuteStatement", "redshift-data:DescribeStatement", "redshift-data:CancelStatement", "redshift-data:GetStatementResult", "redshift-data:ListSchemas", "redshift-data:ListTables" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "redshift:GetClusterCredentials" ], "Resource": [ "arn:aws:redshift:*:*:dbuser:*/sagemaker_access*", "arn:aws:redshift:*:*:dbname:*" ] } ] }
Política para conceder acceso a un bucket de S3
Si su conjunto de datos está almacenado en Amazon S3, puede conceder permiso a un rol de IAM para que acceda a este bucket con una política similar a la siguiente. Este ejemplo otorga acceso de lectura-escritura mediante programación al bucket denominado test
.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": ["arn:aws:s3:::
test
"] }, { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject" ], "Resource": ["arn:aws:s3:::test
/*"] } ] }
Para importar datos de Athena y Amazon Redshift, debe conceder un permiso de rol de IAM para acceder a los siguientes prefijos en el bucket predeterminado de Amazon S3 en la región de AWS donde se utiliza Data Wrangler: athena/
, redshift/
. Si aún no existe un bucket predeterminado de Amazon S3 en la región de AWS, también debe conceder permiso al rol de IAM para crear un bucket en esta región.
Además, si desea que el rol de IAM pueda utilizar las opciones de exportación de trabajos del Almacén de características de Amazon SageMaker, Canalizaciones y Data Wrangler, debe conceder acceso al prefijo data_wrangler_flows/
en este bucket.
Data Wrangler utiliza los prefijos athena/
y redshift/
para almacenar los archivos de vista previa y conjuntos de datos importados. Para obtener más información, consulte Almacenamiento de datos importados.
Data Wrangler usa el prefijo data_wrangler_flows/
para almacenar archivos .flow cuando ejecuta un cuaderno de Jupyter exportado desde Data Wrangler. Para obtener más información, consulte Exportar.
Utilice una política similar a la siguiente para conceder los permisos descritos en los párrafos anteriores.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::sagemaker-
region
-account-id
/data_wrangler_flows/", "arn:aws:s3:::sagemaker-region
-account-id
/data_wrangler_flows/*", "arn:aws:s3:::sagemaker-region
-account-id
/athena", "arn:aws:s3:::sagemaker-region
-account-id
/athena/*", "arn:aws:s3:::sagemaker-region
-account-id
/redshift", "arn:aws:s3:::sagemaker-region
-account-id
/redshift/*" ] }, { "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:ListBucket" ], "Resource": "arn:aws:s3:::sagemaker-region
-account-id
" }, { "Effect": "Allow", "Action": [ "s3:ListAllMyBuckets", "s3:GetBucketLocation" ], "Resource": "*" } ] }
También puede acceder a los datos del bucket de Amazon S3 desde otra cuenta de AWS si especifica el URI del bucket de Amazon S3. Para ello, la política de IAM que concede acceso al bucket de Amazon S3 de la otra cuenta debe utilizar una política similar a la del siguiente ejemplo, en la que BucketFolder
se encuentra el directorio específico del bucket UserBucket
del usuario. Esta política debe añadirse al usuario que conceda acceso a su bucket a otro usuario.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::
UserBucket
/BucketFolder/
*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": "arn:aws:s3:::UserBucket
", "Condition": { "StringLike": { "s3:prefix": [ "BucketFolder
/*" ] } } } ] }
El usuario que accede al bucket (no el propietario del bucket) debe agregar a su usuario una política similar a la del siguiente ejemplo. Tenga en cuenta que AccountX
y TestUser
a continuación se refieren al propietario del bucket y a su usuario, respectivamente.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
AccountX:user
/TestUser
" }, "Action": [ "s3:GetObject", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::UserBucket
/BucketFolder
/*" ] }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountX:user
/TestUser
" }, "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::UserBucket
" ] } ] }
Ejemplo de política para conceder acceso de uso de SageMaker Studio
Utilice una política como la siguiente para crear un rol de ejecución de IAM que se pueda utilizar para configurar una instancia de Studio Classic.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sagemaker:CreatePresignedDomainUrl", "sagemaker:DescribeDomain", "sagemaker:ListDomains", "sagemaker:DescribeUserProfile", "sagemaker:ListUserProfiles", "sagemaker:*App", "sagemaker:ListApps" ], "Resource": "*" } ] }
Snowflake y Data Wrangler
Todos los permisos de los recursos de AWS se administran mediante el rol de IAM asociado a la instancia de Studio Classic. El administrador de Snowflake administra los permisos específicos de Snowflake, ya que puede conceder permisos y privilegios detallados a cada usuario de Snowflake. Esto incluye bases de datos, esquemas, tablas, almacenes y objetos de integración de almacenamiento. Debe asegurarse de que los permisos correctos estén configurados fuera de Data Wrangler.
Tenga en cuenta que el comando COPY INTO Amazon S3
de Snowflake mueve los datos de Snowflake a Amazon S3 a través de la Internet pública de forma predeterminada, pero los datos en tránsito se protegen mediante SSL. Los datos en reposo de Amazon S3 se cifran con SSE-KMS con la AWS KMS key predeterminada.
Con respecto al almacenamiento de credenciales de Snowflake, Data Wrangler no almacena las credenciales de los clientes. Data Wrangler usa Secrets Manager para almacenar las credenciales en un secreto y rota los secretos como parte de un plan de seguridad basado en las prácticas recomendadas. El administrador de Snowflake o Studio Classic debe asegurarse de que el rol de ejecución de Studio Classic del científico de datos tenga permiso para realizar GetSecretValue
en el secreto que almacena las credenciales. Si ya está asociada al rol de ejecución de Studio Classic, la política AmazonSageMakerFullAccess
cuenta con los permisos necesarios para leer los secretos creados por Data Wrangler y secretos creados conforme a la convención de nomenclatura y etiquetado de las instrucciones anteriores. Se debe conceder acceso por separado a los secretos que no sigan las convenciones. Se recomienda usar Secrets Manager para evitar compartir credenciales a través de canales no seguros; sin embargo, tenga en cuenta que un usuario que haya iniciado sesión puede recuperar la contraseña de texto sin formato si inicializa un terminal o un cuaderno de Python en Studio Classic y, a continuación, invoca llamadas a la API desde la API de Secrets Manager.
Cifrado de datos con AWS KMS
En Data Wrangler, puede descifrar archivos cifrados y agregarlos a su flujo de Data Wrangler. También puede cifrar el resultado de las transformaciones mediante una clave de AWS KMS predeterminada o una que usted mismo proporcione.
Puede importar archivos si tienen:
-
cifrado del servidor
-
SSE-KMS como tipo de cifrado
Para descifrar el archivo e importarlo a un flujo de Data Wrangler, debe añadir el usuario de SageMaker Studio Classic que utiliza como usuario clave.
La siguiente captura de pantalla muestra un rol de usuario de Studio Classic añadido como usuario de claves. Consulte Roles de IAM
Configuración de claves administradas por el cliente de Amazon S3 para el almacenamiento de datos importados de Data Wrangler
De forma predeterminada, Data Wrangler usa buckets de Amazon S3 que tienen la siguiente convención de nomenclatura: sagemaker-region-account number
. Por ejemplo, si su número de cuenta es 111122223333
y utiliza Studio Classic en us-east-1, los conjuntos de datos importados se almacenan con la siguiente convención de nomenclatura: sagemaker-us-east-1-111122223333
.
En las siguientes instrucciones se explica cómo configurar una clave administrada por el cliente para el bucket de Amazon S3 predeterminado.
-
Para habilitar el cifrado del servidor y configurar una clave administrada por el cliente para el bucket de S3 predeterminado, consulte Using KMS Encryption.
-
Tras seguir el paso 1, vaya a AWS KMS en la AWS Management Console. Busque la clave administrada por el cliente que seleccionó en el paso 1 del paso anterior y añada el rol de Studio Classic como usuario de claves. Para ello, siga las instrucciones de Allows key users to use a customer managed key.
Cifrado de los datos que exporta
Puede cifrar los datos que exporte mediante uno de los métodos siguientes:
-
Si especifica que el bucket de Amazon S3 tiene un objeto, utilice el cifrado SSE-KMS.
-
Especifique una clave de AWS KMS para cifrar los datos que exporta desde Data Wrangler.
En la página Exportar datos, especifique un valor para el ARN o ID de clave de AWS KMS.
Para obtener más información, consulte AWS KMS keys, see Protecting Data Using Server-Side Encryption with AWS KMS keys Stored in AWSAWS Key Management Service (SSE-KMS) .
Permisos de Amazon AppFlow
Al realizar una transferencia, debe especificar un rol de IAM que tenga permisos para realizar la transferencia. Puede usar el mismo rol de IAM que tiene permisos para usar Data Wrangler. De forma predeterminada, el rol de IAM que utiliza para acceder a Data Wrangler es SageMakerExecutionRole
.
El rol de IAM también debe tener los siguientes permisos:
-
Permisos para Amazon AppFlow
-
Permisos para el catálogo de datos de AWS Glue
-
Permisos para AWS Glue para detectar los orígenes de datos disponibles
Cuando ejecuta una transferencia, Amazon AppFlow almacena los metadatos de la transferencia en el catálogo de datos de AWS Glue. Data Wrangler usa los metadatos del catálogo para determinar si están disponibles para consultarlos e importarlos.
Para agregar permisos a Amazon AppFlow, agregue la política administrada por AWS, AmazonAppFlowFullAccess
, al rol de IAM. Para obtener más información acerca de la adición de políticas, consulte Adición y eliminación de permisos de identidad de IAM.
Si va a transferir datos a Amazon S3, también debe asociar la siguiente política.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:GetBucketTagging", "s3:ListBucketVersions", "s3:CreateBucket", "s3:ListBucket", "s3:GetBucketPolicy", "s3:PutEncryptionConfiguration", "s3:GetEncryptionConfiguration", "s3:PutBucketTagging", "s3:GetObjectTagging", "s3:GetBucketOwnershipControls", "s3:PutObjectTagging", "s3:DeleteObject", "s3:DeleteBucket", "s3:DeleteObjectTagging", "s3:GetBucketPublicAccessBlock", "s3:GetBucketPolicyStatus", "s3:PutBucketPublicAccessBlock", "s3:PutAccountPublicAccessBlock", "s3:ListAccessPoints", "s3:PutBucketOwnershipControls", "s3:PutObjectVersionTagging", "s3:DeleteObjectVersionTagging", "s3:GetBucketVersioning", "s3:GetBucketAcl", "s3:PutObject", "s3:GetObject", "s3:GetAccountPublicAccessBlock", "s3:ListAllMyBuckets", "s3:GetAnalyticsConfiguration", "s3:GetBucketLocation" ], "Resource": "*" } ] }
Para agregar permisos de AWS Glue, agregue la política administrada AWSGlueConsoleFullAccess
al rol de IAM. Para obtener más información sobre los permisos de AWS Glue con Amazon AppFlow, consulte [link-to-appflow-page].
Amazon AppFlow necesita acceder a AWS Glue y Data Wrangler para poder importar los datos que ha transferido. Para conceder acceso a Amazon AppFlow, agregue la siguiente política de confianza al rol de IAM.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:root", "Service": [ "appflow.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
Para mostrar los datos de Amazon AppFlow en Data Wrangler, agregue la siguiente política al rol de IAM:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "glue:SearchTables", "Resource": [ "arn:aws:glue:*:*:table/*/*", "arn:aws:glue:*:*:database/*", "arn:aws:glue:*:*:catalog" ] } ] }
Uso de configuraciones de ciclo de vida en Data Wrangler
Es posible que tenga una instancia de Amazon EC2 configurada para ejecutar aplicaciones de Kernel Gateway, pero no la aplicación Data Wrangler. Las aplicaciones de Kernel Gateway proporcionan acceso al entorno y a los kernels que se utilizan para ejecutar los cuadernos y terminales de Studio Classic. La aplicación Data Wrangler es la aplicación de interfaz de usuario que ejecuta Data Wrangler. Las instancias de Amazon EC2 que no son instancias de Data Wrangler requieren una modificación de las configuraciones de su ciclo de vida para ejecutar Data Wrangler. Las configuraciones del ciclo de vida son scripts de intérprete de comandos que automatizan la personalización del entorno de Amazon SageMaker Studio Classic.
Para obtener más información acerca de las configuraciones del ciclo de vida, consulte Uso de las configuraciones del ciclo de vida para personalizar Studio Classic.
La configuración del ciclo de vida predeterminada de la instancia no admite el uso de Data Wrangler. Puede realizar las siguientes modificaciones en la configuración predeterminada para poder usar Data Wrangler con su instancia.
#!/bin/bash set -eux STATUS=$( python3 -c "import sagemaker_dataprep" echo $? ) if [ "$STATUS" -eq 0 ]; then echo 'Instance is of Type Data Wrangler' else echo 'Instance is not of Type Data Wrangler' # Replace this with the URL of your git repository export REPOSITORY_URL="https://github.com/aws-samples/sagemaker-studio-lifecycle-config-examples.git" git -C /root clone $REPOSTIORY_URL fi
Puede guardar el script como lifecycle_configuration.sh
.
Puede asociar la configuración del ciclo de vida a su dominio o perfil de usuario de Studio Classic. Para obtener más información acerca de la creación y asociación de un configuración de ciclo de vida, consulte Creación y asociación de una configuración del ciclo de vida.
Las siguientes instrucciones muestran cómo asociar una configuración de ciclo de vida a un dominio o perfil de usuario de Studio Classic.
Es posible que se produzcan errores al crear o asociar una configuración de ciclo de vida. Para obtener información acerca de la solución de errores de configuración de ciclo de vida, consulte Fallo de la aplicación de KernelGateway.