View a markdown version of this page

Restreindre l'accès aux artefacts aux déploiements de packages de modèles - Amazon SageMaker AI

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Restreindre l'accès aux artefacts aux déploiements de packages de modèles

Lorsque vous partagez un package de modèles entre plusieurs comptes, le rôle d'exécution du compte consommateur dépend des artefacts du modèle du compte producteur. s3:GetObject Par défaut, cette autorisation s'applique chaque fois que le rôle est utilisé. Par conséquent, tout responsable qui utilise le rôle peut lire les artefacts à partir d'un bloc-notes, d'un travail de formation ou via un appel API direct, et pas seulement pendant le déploiement d'un package modèle.

Vous pouvez restreindre cet accès afin que seul un déploiement de package modèle puisse lire les artefacts. Pendant le déploiement, l' SageMaker IA applique la balise de session sagemaker:ModelPackageArn à la session de rôle d'exécution qu'elle assume. La valeur de la balise est l'ARN du package modèle en cours de déploiement. Une politique de bucket qui nécessite cette balise n'autorise donc l'accès qu'aux sessions de déploiement.

Cela nécessite que trois éléments travaillent ensemble. Les trois sont à vous de les configurer ; SageMaker AI fournit uniquement le tag de session :

  • Un rôle d'exécution balisé ManagedBy=SageMaker dont la politique de confiance permet uniquement au principal du service d' SageMaker IA de l'assumer.

  • Une politique de contrôle des services qui empêche toute personne autre que l' SageMaker IA d'assumer ce rôle ou de définir la clé de sagemaker:ModelPackageArn balise. Sans cela, un principal autorisé à appeler AWS STS pourrait fournir lui-même le tag.

  • Une politique de compartiment Amazon S3 qui s3:GetObject n'autorise que lorsque la session comporte le tag, que l'appelant fait partie de votre organisation et que le rôle est baliséManagedBy=SageMaker.

Important

Le SCP est ce qui rend la balise de session fiable. Si vous appliquez la politique de compartiment sans le SCP, un principal qui peut assumer directement le rôle d'exécution peut attacher la sagemaker:ModelPackageArn balise à sa propre session et satisfaire à la politique de compartiment.

Étape 1 : Marquer et définir le rôle d'exécution

Dans le compte consommateur, balisez le rôle d'exécution ManagedBy=SageMaker et limitez sa politique de confiance au principal du service d' SageMaker IA. La politique de confiance doit permettre à la fois sts:AssumeRole etsts:TagSession. Sans celasts:TagSession, l' SageMaker IA ne peut pas appliquer la balise de sagemaker:ModelPackageArn session et Amazon S3 refuse chaque lecture requise par la politique de compartiment de l'étape 3.

{ "RoleName": "GovernedModelExecutionRole", "Tags": [ { "Key": "ManagedBy", "Value": "SageMaker" } ], "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "sagemaker.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:TagSession" ] }] } }

Étape 2 : Ajouter une politique de contrôle des services

Joignez le SCP suivant à votre organisation. La première instruction permet uniquement au principal du service d' SageMaker IA d'assumer un rôle étiquetéManagedBy=SageMaker. La seconde permet uniquement à l' SageMaker IA de définir la clé de sagemaker:ModelPackageArn balise, qui est la seule clé de balise évaluée par la politique de compartiment. Pour plus d’informations, consultez Création, mise à jour et suppression de politiques de contrôle des services.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyNonSageMakerAssumeOnManagedRoles", "Effect": "Deny", "Action": "sts:AssumeRole", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/ManagedBy": "SageMaker" }, "StringNotEquals": { "aws:PrincipalServiceName": "sagemaker.amazonaws.com" } } }, { "Sid": "DenyTaggingProtectedKeysUnlessSageMaker", "Effect": "Deny", "Action": [ "iam:TagRole", "iam:UntagRole", "sts:TagSession" ], "Resource": "*", "Condition": { "StringLike": { "aws:RequestTag/sagemaker:ModelPackageArn": "*" }, "StringNotEquals": { "aws:PrincipalServiceName": "sagemaker.amazonaws.com" } } } ] }
Note

Les deux instructions utilisent StringNotEquals onaws:PrincipalServiceName, qui prend la valeur true lorsque la clé est absente. Le SCP refuse donc ces actions à tous les utilisateurs et rôles IAM de vos comptes membres, y compris les sessions qui ne comportent aucun principal de service. Les SCP ne s'appliquent pas aux appels que les AWS services passent avec leurs propres responsables de service ; la politique de confiance du rôle, qui accorde l'accès uniquement au principal du service d' SageMaker IA, exclut les autres AWS services.

Étape 3 : ajouter la politique de compartiment Amazon S3

Dans le compte producteur, appliquez la politique suivante au compartiment contenant les artefacts du modèle. Les trois conditions doivent être remplies. Amazon S3 refuse toute session à laquelle il en manque une.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowOnlyModelPackageDeployments", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::model-artifacts-bucket/model-package-prefix/*", "Condition": { "StringLike": { "aws:PrincipalTag/sagemaker:ModelPackageArn": "arn:aws:sagemaker:*:producer-account-id:model-package/model-package-group/*" }, "StringEquals": { "aws:PrincipalOrgID": "o-organization-id", "aws:PrincipalTag/ManagedBy": "SageMaker" } } } ] }

L'utilisation Principal d'une valeur égale * à ces conditions signifie que n'importe quel rôle de votre organisation qui est balisé ManagedBy=SageMaker et porte la balise de déploiement peut lire les artefacts. Vous n'êtes pas obligé de modifier la politique pour chaque rôle consommateur. Le caractère générique de l'ARN du package modèle couvre toutes les versions du groupe.

Important

ResourcePortez sur les artefacts d'un seul groupe de packages de modèles. Un préfixe couvrant plusieurs groupes permettrait au déploiement d'un package de modèle de lire les artefacts d'un autre groupe, car la balise de session est vérifiée par rapport au caractère générique du groupe plutôt qu'au chemin de l'objet.

Si les artefacts sont chiffrés à l'aide d'une AWS KMS clé gérée par le client, le rôle d'exécution doit également kms:Decrypt porter sur cette clé. Accordez-le dans la politique clé ; une politique IAM à elle seule ne suffit pas.

Surveiller l'accès aux artefacts

Votre compte enregistre à la fois le balisage de la session et la décision d'accès qui en résulte.

  • Dans CloudTrail, l'AssumeRoleévénement correspondant au rôle d'exécution répertorie les balises de session ci-dessousrequestParameters. Vérifiez qu'il sagemaker:ModelPackageArn est présent et qu'il correspond au package de modèles que vous avez déployé.

  • Dans les journaux d'événements de données ou d'accès au serveur Amazon S3, les GetObject requêtes relatives au préfixe de l'artefact indiquent si chaque lecture a été autorisée ou refusée, afin que vous puissiez confirmer que l'accès non lié au déploiement est refusé.

Avant d'appliquer les politiques à un bucket de production, vous pouvez les évaluer à l'aide du simulateur de politiques IAM pour confirmer qu'une session de déploiement est autorisée et qu'une session sans étiquette est refusée. Pour plus d'informations, consultez la section Tester les politiques IAM à l'aide du simulateur de politiques IAM.