Sécurité et autorisations - Amazon SageMaker

Sécurité et autorisations

Lorsque vous interrogez des données depuis Athena ou Amazon Redshift, le jeu de données interrogé est automatiquement stocké dans le compartiment SageMaker S3 par défaut pour la région AWS dans laquelle vous utilisez Studio. En outre, lorsque vous exportez un bloc-notes Jupyter à partir d'Amazon SageMaker Data Wrangler et que vous l'exécutez, vos flux de données, ou fichiers .flow, sont enregistrés dans le même compartiment par défaut, sous le préfixe data_wrangler_flows.

Pour des besoins de sécurité de haut niveau, vous pouvez configurer une politique de compartiment qui restreint les rôles AWS ayant accès à ce compartiment S3 SageMaker par défaut. Utilisez la section suivante pour ajouter ce type de politique à un compartiment S3. Pour suivre les instructions figurant sur cette page, utilisez AWS Command Line Interface (AWS CLI). Pour savoir comment procéder, veuillez consulter Configuration de l'AWS CLI dans le Guide de l'utilisateur IAM.

En outre, vous devez accorder à chaque rôle IAM qui utilise Data Wrangler des autorisations d'accès aux ressources requises. Si vous n'avez pas besoin d'autorisations détaillées pour le rôle IAM que vous utilisez pour accéder à Data Wrangler, vous pouvez ajouter la politique gérée IAM, AmazonSageMakerFullAccess, à un rôle IAM que vous utilisez pour créer votre utilisateur Studio. Cette politique vous accorde la pleine autorisation d'utiliser Data Wrangler. Si vous avez besoin d'autorisations plus détaillées, veuillez consulter la rubrique Accorder à un rôle IAM l'autorisation d'utiliser Data Wrangler.

Ajouter une politique de compartiment pour restreindre l'accès aux jeux de données importés dans Data Wrangler

Vous pouvez ajouter une politique au compartiment S3 qui contient vos ressources Data Wrangler à l'aide d'une politique de compartiment Amazon S3. Les ressources que Data Wrangler charge dans votre compartiment S3 SageMaker par défaut de la région AWS dans laquelle vous utilisez Studio sont les suivantes :

  • Résultats des requêtes à Amazon Redshift. Ceux-ci sont stockés sous le préfixe redshift/.

  • Résultats des requêtes à Athena. Ceux-ci sont stockés sous le préfixe athena/.

  • Les fichiers .flow chargés sur Amazon S3 lorsque vous exécutez un bloc-notes Jupyter exporté produit par Data Wrangler. Ceux-ci sont stockés sous le préfixe data_wrangler_flows/.

Utilisez la procédure suivante pour créer une politique de compartiment S3 que vous pouvez ajouter pour restreindre l'accès du rôle IAM à ce compartiment. Pour savoir comment ajouter une politique à un compartiment S3, veuillez consulter Ajout d'une stratégie de compartiment à l'aide de la console Amazon S3.

Pour configurer une politique de compartiment sur le compartiment S3 qui stocke vos ressources Data Wrangler :

  1. Configurez un ou plusieurs rôles IAM qui pourront accéder à Data Wrangler.

  2. Ouvrez une invite de commande ou un shell. Pour chaque rôle que vous créez, remplacez role-name par le nom du rôle et exécutez ce qui suit :

    $ aws iam get-role --role-name role-name

    Dans la réponse, vous voyez une chaîne RoleId qui commence par AROA. Copiez cette chaîne.

  3. Ajoutez la politique suivante au compartiment SageMaker par défaut dans la région AWS dans laquelle vous utilisez Data Wrangler. Remplacez region par la région AWS dans laquelle se trouve le compartiment, et account-id par votre ID de compte AWS. Remplacez les userId commençant par AROAEXAMPLEID par les ID de rôles AWS auxquels vous souhaitez accorder l'autorisation d'utiliser 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:*" ] } } } ] }

Accorder à un rôle IAM l'autorisation d'utiliser Data Wrangler

Vous pouvez accorder à un rôle IAM l'autorisation d'utiliser Data Wrangler avec la politique gérée IAM générale AmazonSageMakerFullAccess. Il s'agit d'une politique générale qui comprend les autorisations requises pour utiliser tous les services SageMaker. Cette politique accorde à un rôle IAM un accès complet à Data Wrangler. Vous devez être conscient des points suivants lors de l'utilisation de AmazonSageMakerFullAccess pour accorder l'accès à Data Wrangler :

  • Si vous importez des données depuis Amazon Redshift, le nom du Database User (Utilisateur de base de données) doit avoir le préfixe sagemaker_access.

  • Cette politique gérée accorde uniquement l'autorisation d'accéder aux compartiments avec l'un des noms suivants : SageMaker, SageMaker, sagemaker ou aws-glue. Si vous souhaitez utiliser Data Wrangler pour importer à partir d'un compartiment S3 sans ces phrases dans le nom, reportez-vous à la dernière section de cette page pour savoir comment accorder à une entité IAM l'autorisation d'accéder à vos compartiments S3.

Si vous avez des besoins de sécurité élevée, vous pouvez associer les politiques de cette section à une entité IAM pour accorder les autorisations requises pour utiliser Data Wrangler.

Si vous avez des jeux de données dans Amazon Redshift ou Athena qu'un rôle IAM doit importer à partir de Data Wrangler, vous devez ajouter une politique à cette entité pour accéder à ces ressources. Les politiques suivantes sont les politiques les plus restrictives que vous pouvez utiliser pour accorder à un rôle IAM l'autorisation d'importer des données à partir d'Amazon Redshift et Athena.

Pour apprendre à attacher une politique personnalisée à un rôle IAM, veuillez consulter Gestion des stratégies IAM dans le Guide de l'utilisateur IAM.

Exemple de politique pour accorder l'accès à une importation de jeu de données Athena

La politique suivante suppose que le rôle IAM a l'autorisation d'accéder au compartiment S3 sous-jacent dans lequel les données sont stockées via une politique IAM distincte.

{ "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" ] } ] }

Exemple de politique pour accorder l'accès à une importation de jeu de données Amazon Redshift

La politique suivante accorde l'autorisation de configurer une connexion depuis Amazon Redshift vers Data Wrangler à l'aide d'utilisateurs de base de données possédant le préfixe sagemaker_access dans le nom. Pour accorder l'autorisation de se connecter à l'aide d'utilisateurs de base de données supplémentaires, ajoutez des entrées supplémentaires sous "Resources" dans la politique suivante. La politique suivante suppose que le rôle IAM a l'autorisation d'accéder au compartiment S3 sous-jacent dans lequel les données sont stockées via une politique IAM distincte, le cas échéant.

{ "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:*" ] } ] }

Politique pour accorder l'accès à un compartiment S3

Si votre jeu de données est stocké dans Amazon S3, vous pouvez accorder une autorisation de rôle IAM pour accéder à ce compartiment avec une politique similaire à la suivante. Cet exemple octroie l'accès programmatique en lecture-écriture au compartiment nommé 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/*"] } ] }

Pour importer des données à partir d'Athena et d'Amazon Redshift, vous devez accorder une autorisation de rôle IAM pour accéder aux préfixes suivants sous le compartiment Amazon S3 par défaut dans la région AWS dans laquelle Data Wrangler est utilisé : athena/, redshift/. Si un compartiment Amazon S3 par défaut n'existe pas déjà dans la région AWS, vous devez également autoriser le rôle IAM à créer un compartiment dans cette région.

En outre, si vous souhaitez que le rôle IAM puisse utiliser les options d'exportation des tâches Amazon SageMaker Feature Store, SageMaker Pipeline et Data Wrangler, vous devez accorder l'accès au préfixe data_wrangler_flows/ dans ce compartiment.

Data Wrangler utilise les préfixes athena/ et redshift/ pour stocker les fichiers d'aperçu et les jeux de données importés. Pour en savoir plus, consultez Stockage des données importées.

Data Wrangler utilise le préfixe data_wrangler_flows/ pour stocker des fichiers .flow lorsque vous exécutez un bloc-notes Jupyter exporté à partir de Data Wrangler. Pour en savoir plus, consultez Export.

Utilisez une politique semblable à la suivante pour accorder les autorisations décrites dans les paragraphes précédents.

{ "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": "*" } ] }

Vous pouvez également accéder aux données dans votre compartiment Amazon S3 à partir d'un autre compte AWS en spécifiant l'URI du compartiment Amazon S3. Pour ce faire, la politique IAM qui accorde l'accès au compartiment Amazon S3 de l'autre compte doit utiliser une politique semblable à celle de l'exemple suivant, où BucketFolder est le répertoire spécifique dans le compartiment utilisateurs UserBucket. Cette politique doit être ajoutée à l'utilisateur accordant l'accès à son compartiment pour un autre utilisateur.

{ "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/*" ] } } } ] }

L'utilisateur qui accède au compartiment (qui n'est pas le propriétaire du compartiment) doit ajouter à son utilisateur une politique semblable à celle présentée dans l'exemple suivant. Notez que AccountX et TestUser ci-dessous font référence au propriétaire du compartiment et à son utilisateur respectivement.

{ "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" ] } ] }

Exemple de politique permettant d'accorder l'accès à l'utilisation de SageMaker Studio

Utilisez une politique similaire à la suivante pour créer un rôle d'exécution IAM qui peut être utilisé pour configurer une instance Studio.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sagemaker:CreatePresignedDomainUrl", "sagemaker:DescribeDomain", "sagemaker:ListDomains", "sagemaker:DescribeUserProfile", "sagemaker:ListUserProfiles", "sagemaker:*App", "sagemaker:ListApps" ], "Resource": "*" } ] }

Snowflake et Data Wrangler

Toutes les autorisations pour les ressources AWS sont gérées via le rôle IAM associé à votre instance Studio. L'administrateur Snowflake gère les autorisations spécifiques de Snowflake, car elles peuvent accorder des autorisations et privilèges détaillés à chaque utilisateur Snowflake. Cela inclut les bases de données, les schémas, les tables, les entrepôts et les objets d'intégration de stockage. Vous devez vous assurer que les bonnes autorisations sont configurées en dehors de Data Wrangler.

Notez que la commande Snowflake COPY INTO Amazon S3 déplace les données de Snowflake vers Amazon S3 au travers du réseau Internet public par défaut, mais les données en transit sont sécurisées à l'aide de SSL. Les données au repos dans Amazon S3 sont chiffrées avec SSE-KMS en utilisant le AWS KMS key par défaut.

En ce qui concerne le stockage des informations d'identification Snowflake, Data Wrangler ne stocke pas les informations d'identification client. Data Wrangler utilise Secrets Manager pour stocker les informations d'identification dans un secret et procède à une rotation des secrets dans le cadre d'un plan de sécurité suivant les bonnes pratiques. L'administrateur Snowflake ou Studio doit s'assurer que le rôle d'exécution Studio du scientifique des données est autorisé à exécuter GetSecretValue pour le secret stockant les informations d'identification. Si elle est déjà attachée au rôle d'exécution de Studio, la politique AmazonSageMakerFullAccess a les autorisations nécessaires pour lire les secrets créés par Data Wrangler et les secrets créés en suivant la convention de dénomination et de balisage dans les instructions ci-dessus. L'accès aux secrets qui ne suivent pas les conventions doit être accordé séparément. Nous recommandons d'utiliser Secrets Manager pour empêcher le partage d'informations d'identification sur des canaux non sécurisés. Toutefois, notez qu'un utilisateur connecté peut récupérer le mot de passe en texte brut en lançant un terminal ou un bloc-notes Python dans Studio, puis en appelant des appels d'API à partir de l'API Secrets Manager.

Chiffrement des données avec AWS KMS

Dans Data Wrangler, vous pouvez déchiffrer des fichiers chiffrés et les ajouter à votre flux Data Wrangler. Vous pouvez également chiffrer la sortie des transformations à l'aide d'une clé AWS KMS par défaut ou d'une clé que vous fournissez.

Vous pouvez importer des fichiers s'ils possèdent les éléments suivants :

  • chiffrement côté serveur

  • SSE-KMS comme type de chiffrement

Pour déchiffrer le fichier et l'importer dans un flux Data Wrangler, vous devez ajouter l'utilisateur SageMaker Studio que vous utilisez en tant qu'utilisateur clé.

La capture d'écran suivante montre un rôle d'utilisateur Studio ajouté en tant qu'utilisateur clé. Consultez Rôles IAM afin d'accéder aux utilisateurs sous le volet de gauche pour effectuer cette modification.

Configuration de la clé gérée par Amazon S3 pour le stockage des données importées Data Wrangler

Par défaut, Data Wrangler utilise des compartiments Amazon S3 qui ont la convention de dénomination suivante : sagemaker-region-account number. Par exemple, si votre numéro de compte est 111122223333 et que vous utilisez Studio dans us-east-1, vos jeux de données importés sont stockés avec la convention de dénomination suivante : sagemaker-us-east-1-111122223333.

Les instructions suivantes expliquent la façon de configurer une clé gérée par le client pour votre compartiment Amazon S3 par défaut.

  1. Pour activer le chiffrement côté serveur et configurer une clé gérée par le client pour votre compartiment S3 par défaut, veuillez consulter Utilisation du chiffrement KMS.

  2. Après avoir suivi l'étape 1, accédez à AWS KMS dans votre AWS Management Console. Recherchez la clé gérée par le client que vous avez sélectionnée à l'étape 1 de l'étape précédente et ajoutez le rôle Studio en tant qu'utilisateur clé. Pour ce faire, suivez les instructions dans Autorisation aux utilisateurs clés d'utiliser une clé gérée par le client.

Chiffrement des données que vous exportez

Vous pouvez chiffrer les données que vous exportez à l'aide de l'une des méthodes suivantes :

  • Si vous spécifiez que votre compartiment Amazon S3 possède un objet, utilisez le chiffrement SSE-KMS.

  • Spécification d'une clé AWS KMS pour chiffrer les données que vous exportez depuis Data Wrangler.

Sur la page Export data (Exporter des données), spécifiez une valeur pour AWS KMS key ID or ARN (ARN ou ID de clé KMS).

Pour plus d'informations sur l'utilisation des clés AWS KMS, veuillez consulter la page Protection des données grâce au chiffrement côté serveur avec les clés AWS KMS stockées dans AWSAWS Key Management Service (SSE-KMS).