Accès inter-compte à la boutique hors ligne - Amazon SageMaker

Accès inter-compte à la boutique hors ligne

Amazon SageMaker Feature Store permet aux utilisateurs de créer un groupe de fonctions dans un compte (compte A) et de le configurer avec une boutique hors ligne à l'aide d'un compartiment Amazon S3 dans un autre compte (compte B). La configuration peut se faire à l'aide des étapes décrites dans la section suivante.

Étape 1 : configurer le rôle d'accès à la boutique hors ligne dans le compte A

Tout d'abord, configurez un rôle pour Amazon SageMaker Feature Store pour écrire les données dans la boutique hors ligne. Le plus simple consiste à créer un rôle à l'aide de la stratégie AmazonSageMakerFeatureStoreAccess ou d'utiliser un rôle existant auquel la stratégie AmazonSageMakerFeatureStoreAccess est déjà attachée. Ce document désigne cette stratégie sous Account-A-Offline-Feature-Store-Role-ARN.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetBucketAcl", "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::*SageMaker*", "arn:aws:s3:::*Sagemaker*", "arn:aws:s3:::*sagemaker*" ] } ] }

L'extrait de code précédent montre la stratégie AmazonSageMakerFeatureStoreAccess. La section Resource de la stratégie est étendue par défaut aux compartiments S3 dont les noms contiennent SageMaker, Sagemaker ou sagemaker. Autrement dit, le compartiment S3 de la boutique hors ligne utilisé doit suivre cette convention de dénomination. Si ce n'est pas votre cas, ou si vous voulez étendre encore la ressource, vous pouvez copier et coller la politique à votre politique de compartiment S3 dans la console, personnaliser la section Resource comme arn:aws:s3:::your-offline-store-bucket-name, puis l'attacher au rôle.

Ce rôle doit en outre disposer des autorisations KMS attachées. Au minimum, il nécessite que l'autorisation kms:GenerateDataKey puisse écrire dans la boutique hors ligne à l'aide de votre clé gérée par le client. Reportez-vous à l'étape 3 pour savoir pourquoi le scénario inter-compte requiert une clé gérée par le client, et comment la configurer. L'exemple suivant illustre une stratégie en ligne :

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:*:Account-A-Account-Id:key/*" } ] }

La section Resource de cette stratégie est étendue à n'importe quelle clé du compte A. Pour élargie encore l'étendue, après avoir configuré la clé KMS de la boutique hors ligne à l'étape 3, revenez à cette stratégie et remplacez-la par l'ARN de clé.

Étape 2 : configurer un compartiment S3 de boutique hors ligne dans le compte B

Créez un compartiment S3 dans le compte B. Si vous utilisez la stratégie AmazonSageMakerFeatureStoreAccess par défaut, le nom du compartiment doit inclure SageMaker, Sagemaker ou sagemaker. Modifiez la stratégie de compartiment, comme illustré dans l'exemple suivant, afin d'autoriser le compte A à lire et écrire des objets.

Ce document désigne l'exemple de stratégie de compartiment suivant sous Account-B-Offline-Feature-Store-Bucket.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3CrossAccountBucketAccess", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:GetBucketAcl" ], "Principal": { "AWS": [ "*Account-A-Offline-Feature-Store-Role-ARN*" ], }, "Resource": [ "arn:aws:s3:::offline-store-bucket-name/*", "arn:aws:s3:::offline-store-bucket-name" ] } ] }

Dans la stratégie précédente, le principal est Account-A-Offline-Feature-Store-Role-ARN, qui est le rôle créé dans le compte A à l'étape 1 et fourni à Amazon SageMaker Feature Store pour écrire dans la boutique hors ligne. Vous pouvez fournir plusieurs rôles ARN sous Principal.

Étape 3 : configurer une clé de chiffrement KMS de la boutique hors ligne dans le compte A

Amazon SageMaker Feature Store garantit l'activation en continu du chiffrement côté serveur pour les objets S3 dans la boutique hors ligne. Pour les cas d'utilisation inter-compte, vous devez fournir une clé gérée par le client afin de pouvoir contrôler qui peut écrire dans la boutique hors ligne (dans ce cas, Account-A-Offline-Feature-Store-Role-ARN à partir du compte A) et qui peut lire à partir de la boutique hors ligne (dans ce cas, les identités à partir du compte B).

Ce document désigne l'exemple de stratégie de clé suivant sous Account-A-Offline-Feature-Store-KMS-Key-ARN.

{ "Version": "2012-10-17", "Id": "key-consolepolicy-3", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::Account-A-Account-Id:root" }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::Account-A-Account-Id:role/Administrator", ] }, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:TagResource", "kms:UntagResource", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "*" }, { "Sid": "Allow Feature Store to get information about the customer managed key", "Effect": "Allow", "Principal": { "Service": "sagemaker.amazonaws.com" }, "Action": [ "kms:Describe*", "kms:Get*", "kms:List*" ], "Resource": "*" }, { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": [ "*Account-A-Offline-Feature-Store-Role-ARN*", "*arn:aws:iam::Account-B-Account-Id:root*" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:DescribeKey", "kms:CreateGrant", "kms:RetireGrant", "kms:ReEncryptFrom", "kms:ReEncryptTo", "kms:GenerateDataKey", "kms:ListAliases", "kms:ListGrants" ], "Resource": "*", } ] }

Étape 4 : créer un groupe de fonctions dans le compte A

Ensuite, créez le groupe de fonctions dans le compte A, avec un compartiment S3 de la boutique hors ligne dans le compte B. Pour ce faire, fournissez les paramètres suivants pour RoleArn, OfflineStoreConfig.S3StorageConfig.KmsKeyId et OfflineStoreConfig.S3StorageConfig.S3Uri, respectivement :

  • Fournissez Account-A-Offline-Feature-Store-Role-ARN en tant que RoleArn.

  • Fournissez Account-A-Offline-Feature-Store-KMS-Key-ARN pour OfflineStoreConfig.S3StorageConfig.KmsKeyId.

  • Fournissez Account-B-Offline-Feature-Store-Bucket pour OfflineStoreConfig.S3StorageConfig.S3Uri.