Exemples de politiques basées sur l'identité Amazon SageMaker AI - 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.

Exemples de politiques basées sur l'identité Amazon SageMaker AI

Par défaut, les utilisateurs et les rôles IAM ne sont pas autorisés à créer ou à modifier des ressources d' SageMaker IA. Ils ne peuvent pas non plus effectuer de tâches à l'aide de l'AWSAPI AWS Management ConsoleAWS CLI, ou. Un administrateur IAM doit créer des politiques IAM autorisant les utilisateurs et les rôles à exécuter des opérations d'API spécifiques sur les ressources spécifiées dont ils ont besoin. Il doit ensuite attacher ces politiques aux utilisateurs ou aux groupes IAM ayant besoin de ces autorisations. Pour découvrir comment attacher des politiques à un utilisateur ou à un groupe IAM, consultez Ajout et suppression d’autorisations d’identité IAM dans la Référence de l’autorisation de service.

Pour apprendre à créer une politique IAM basée sur l’identité à l’aide de ces exemples de documents de politique JSON, consultez Création de politiques dans l’onglet JSON.

Bonnes pratiques en matière de politiques

Les politiques basées sur l'identité déterminent si quelqu'un peut créer, accéder ou supprimer des ressources d' SageMaker IA dans votre compte. Ces actions peuvent entraîner des frais pour votre Compte AWS. Lorsque vous créez ou modifiez des politiques basées sur l’identité, suivez ces instructions et recommandations :

  • Commencez AWS par les politiques gérées et passez aux autorisations du moindre privilège : pour commencer à accorder des autorisations à vos utilisateurs et à vos charges de travail, utilisez les politiques AWS gérées qui accordent des autorisations pour de nombreux cas d'utilisation courants. Ils sont disponibles dans votreCompte AWS. Nous vous recommandons de réduire davantage les autorisations en définissant des politiques gérées par les AWS clients spécifiques à vos cas d'utilisation. Pour plus d’informations, consultez politiques gérées par AWS ou politiques gérées par AWS pour les activités professionnelles dans le Guide de l’utilisateur IAM.

  • Accordez les autorisations de moindre privilège : lorsque vous définissez des autorisations avec des politiques IAM, accordez uniquement les autorisations nécessaires à l’exécution d’une seule tâche. Pour ce faire, vous définissez les actions qui peuvent être entreprises sur des ressources spécifiques dans des conditions spécifiques, également appelées autorisations de moindre privilège. Pour plus d’informations sur l’utilisation d’IAM pour appliquer des autorisations, consultez politiques et autorisations dans IAM dans le Guide de l’utilisateur IAM.

  • Utilisez des conditions dans les politiques IAM pour restreindre davantage l’accès : vous pouvez ajouter une condition à vos politiques afin de limiter l’accès aux actions et aux ressources. Par exemple, vous pouvez écrire une condition de politique pour spécifier que toutes les demandes doivent être envoyées via SSL. Vous pouvez également utiliser des conditions pour accorder l'accès aux actions de service si elles sont utilisées par le biais d'un service spécifiqueService AWS, tel queCloudFormation. Pour plus d’informations, consultez Conditions pour éléments de politique JSON IAM dans le Guide de l’utilisateur IAM.

  • Utilisez l’Analyseur d’accès IAM pour valider vos politiques IAM afin de garantir des autorisations sécurisées et fonctionnelles : l’Analyseur d’accès IAM valide les politiques nouvelles et existantes de manière à ce que les politiques IAM respectent le langage de politique IAM (JSON) et les bonnes pratiques IAM. IAM Access Analyzer fournit plus de 100 vérifications de politiques et des recommandations exploitables pour vous aider à créer des politiques sécurisées et fonctionnelles. Pour plus d’informations, consultez Validation de politiques avec IAM Access Analyzer dans le Guide de l’utilisateur IAM.

  • Exiger l'authentification multifactorielle (MFA) : si vous avez un scénario qui nécessite des utilisateurs IAM ou un utilisateur root, activez l'authentification MFA pour une sécurité accrue. Compte AWS Pour exiger la MFA lorsque des opérations d’API sont appelées, ajoutez des conditions MFA à vos politiques. Pour plus d’informations, consultez Sécurisation de l’accès aux API avec MFA dans le Guide de l’utilisateur IAM.

Pour plus d’informations sur les bonnes pratiques dans IAM, consultez Bonnes pratiques de sécurité dans IAM dans le Guide de l’utilisateur IAM.

Utilisation de la console SageMaker AI

Pour accéder à la console Amazon SageMaker AI, vous devez disposer d'un ensemble minimal d'autorisations. Ces autorisations doivent vous permettre de répertorier et d'afficher les informations relatives aux ressources d' SageMaker IA de votre AWS compte. Si vous créez une politique basée sur l’identité plus restrictive que les autorisations minimales requises, la console ne fonctionnera pas correctement pour les entités tributaires de cette politique. Cela inclut les utilisateurs ou les rôles tributaires de cette politique.

Pour garantir que ces entités peuvent toujours utiliser la console SageMaker AI, vous devez également associer la politique AWS gérée suivante aux entités. Pour plus d’informations, consultez Ajout d’autorisations à un utilisateur dans la Référence de l’autorisation de service :

Il n'est pas nécessaire d'accorder des autorisations de console minimales aux utilisateurs qui appellent uniquement l'API AWS CLI ou l'AWSAPI. Autorisez plutôt l’accès à uniquement aux actions qui correspondent à l’opération d’API que vous tentez d’effectuer.

Autorisations requises pour utiliser la console Amazon SageMaker AI

Le tableau de référence des autorisations répertorie les opérations de l'API Amazon SageMaker AI et indique les autorisations requises pour chaque opération. Pour plus d'informations sur les opérations de l'API Amazon SageMaker AI, consultezAutorisations d'API Amazon SageMaker AI : référence sur les actions, les autorisations et les ressources.

Pour utiliser la console Amazon SageMaker AI, vous devez accorder des autorisations pour des actions supplémentaires. Plus précisément, la console a besoin d'autorisations permettant aux ec2 actions d'afficher des sous-réseaux et VPCs des groupes de sécurité. Le cas échéant, la console nécessite l’autorisation de créer des rôles d’exécution pour des tâches telles que CreateNotebook, CreateTrainingJob et CreateModel. Accordez ces autorisations avec la politique d'autorisation suivante :

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "SageMakerApis", "Effect": "Allow", "Action": [ "sagemaker:*" ], "Resource": "*" }, { "Sid": "VpcConfigurationForCreateForms", "Effect": "Allow", "Action": [ "ec2:DescribeVpcs", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups" ], "Resource": "*" }, { "Sid":"KmsKeysForCreateForms", "Effect":"Allow", "Action":[ "kms:DescribeKey", "kms:ListAliases" ], "Resource":"*" }, { "Sid": "AccessAwsMarketplaceSubscriptions", "Effect": "Allow", "Action": [ "aws-marketplace:ViewSubscriptions" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "codecommit:BatchGetRepositories", "codecommit:CreateRepository", "codecommit:GetRepository", "codecommit:ListRepositories", "codecommit:ListBranches", "secretsmanager:CreateSecret", "secretsmanager:DescribeSecret", "secretsmanager:ListSecrets" ], "Resource": "*" }, { "Sid":"ListAndCreateExecutionRoles", "Effect":"Allow", "Action":[ "iam:ListRoles", "iam:CreateRole", "iam:CreatePolicy", "iam:AttachRolePolicy" ], "Resource":"*" }, { "Sid": "DescribeECRMetaData", "Effect": "Allow", "Action": [ "ecr:Describe*" ], "Resource": "*" }, { "Sid": "PassRoleForExecutionRoles", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "sagemaker.amazonaws.com" } } } ] }

Autorisations requises pour utiliser la console Amazon SageMaker Ground Truth

Pour utiliser la console Amazon SageMaker Ground Truth, vous devez accorder des autorisations pour des ressources supplémentaires. Plus précisément, la console a besoin d’autorisations pour :

  • le AWS Marketplace pour consulter les abonnements,

  • les opérations Amazon Cognito pour gérer votre main-d’œuvre privée,

  • les actions Amazon S3 pour accéder à vos fichiers d’entrée et de sortie,

  • AWS Lambdaactions pour répertorier et invoquer des fonctions

Accordez ces autorisations avec la politique d’autorisation suivante :

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "GroundTruthConsole", "Effect": "Allow", "Action": [ "aws-marketplace:ViewSubscriptions", "cognito-idp:AdminAddUserToGroup", "cognito-idp:AdminCreateUser", "cognito-idp:AdminDeleteUser", "cognito-idp:AdminDisableUser", "cognito-idp:AdminEnableUser", "cognito-idp:AdminRemoveUserFromGroup", "cognito-idp:CreateGroup", "cognito-idp:CreateUserPool", "cognito-idp:CreateUserPoolClient", "cognito-idp:CreateUserPoolDomain", "cognito-idp:DescribeUserPool", "cognito-idp:DescribeUserPoolClient", "cognito-idp:ListGroups", "cognito-idp:ListIdentityProviders", "cognito-idp:ListUsers", "cognito-idp:ListUsersInGroup", "cognito-idp:ListUserPoolClients", "cognito-idp:ListUserPools", "cognito-idp:UpdateUserPool", "cognito-idp:UpdateUserPoolClient", "groundtruthlabeling:DescribeConsoleJob", "groundtruthlabeling:ListDatasetObjects", "groundtruthlabeling:RunGenerateManifestByCrawlingJob", "lambda:InvokeFunction", "lambda:ListFunctions", "s3:GetObject", "s3:PutObject" ], "Resource": "*" } ] }

Autorisations requises pour utiliser la console Amazon Augmented AI (version préliminaire)

Pour utiliser la console Augmented AI, vous devez accorder des autorisations pour des ressources supplémentaires. Accordez ces autorisations avec la politique d'autorisation suivante :

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sagemaker:*Algorithm", "sagemaker:*Algorithms", "sagemaker:*App", "sagemaker:*Apps", "sagemaker:*AutoMLJob", "sagemaker:*AutoMLJobs", "sagemaker:*CodeRepositories", "sagemaker:*CodeRepository", "sagemaker:*CompilationJob", "sagemaker:*CompilationJobs", "sagemaker:*Endpoint", "sagemaker:*EndpointConfig", "sagemaker:*EndpointConfigs", "sagemaker:*EndpointWeightsAndCapacities", "sagemaker:*Endpoints", "sagemaker:*Experiment", "sagemaker:*Experiments", "sagemaker:*FlowDefinitions", "sagemaker:*HumanLoop", "sagemaker:*HumanLoops", "sagemaker:*HumanTaskUi", "sagemaker:*HumanTaskUis", "sagemaker:*HyperParameterTuningJob", "sagemaker:*HyperParameterTuningJobs", "sagemaker:*LabelingJob", "sagemaker:*LabelingJobs", "sagemaker:*Metrics", "sagemaker:*Model", "sagemaker:*ModelPackage", "sagemaker:*ModelPackages", "sagemaker:*Models", "sagemaker:*MonitoringExecutions", "sagemaker:*MonitoringSchedule", "sagemaker:*MonitoringSchedules", "sagemaker:*NotebookInstance", "sagemaker:*NotebookInstanceLifecycleConfig", "sagemaker:*NotebookInstanceLifecycleConfigs", "sagemaker:*NotebookInstanceUrl", "sagemaker:*NotebookInstances", "sagemaker:*ProcessingJob", "sagemaker:*ProcessingJobs", "sagemaker:*RenderUiTemplate", "sagemaker:*Search", "sagemaker:*SearchSuggestions", "sagemaker:*Tags", "sagemaker:*TrainingJob", "sagemaker:*TrainingJobs", "sagemaker:*TransformJob", "sagemaker:*TransformJobs", "sagemaker:*Trial", "sagemaker:*TrialComponent", "sagemaker:*TrialComponents", "sagemaker:*Trials", "sagemaker:*Workteam", "sagemaker:*Workteams" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "sagemaker:*FlowDefinition" ], "Resource": "*", "Condition": { "StringEqualsIfExists": { "sagemaker:WorkteamType": [ "private-crowd", "vendor-crowd" ] } } }, { "Effect": "Allow", "Action": [ "application-autoscaling:DeleteScalingPolicy", "application-autoscaling:DeleteScheduledAction", "application-autoscaling:DeregisterScalableTarget", "application-autoscaling:DescribeScalableTargets", "application-autoscaling:DescribeScalingActivities", "application-autoscaling:DescribeScalingPolicies", "application-autoscaling:DescribeScheduledActions", "application-autoscaling:PutScalingPolicy", "application-autoscaling:PutScheduledAction", "application-autoscaling:RegisterScalableTarget", "aws-marketplace:ViewSubscriptions", "cloudwatch:DeleteAlarms", "cloudwatch:DescribeAlarms", "cloudwatch:GetMetricData", "cloudwatch:GetMetricStatistics", "cloudwatch:ListMetrics", "cloudwatch:PutMetricAlarm", "cloudwatch:PutMetricData", "codecommit:BatchGetRepositories", "codecommit:CreateRepository", "codecommit:GetRepository", "codecommit:ListBranches", "codecommit:ListRepositories", "cognito-idp:AdminAddUserToGroup", "cognito-idp:AdminCreateUser", "cognito-idp:AdminDeleteUser", "cognito-idp:AdminDisableUser", "cognito-idp:AdminEnableUser", "cognito-idp:AdminRemoveUserFromGroup", "cognito-idp:CreateGroup", "cognito-idp:CreateUserPool", "cognito-idp:CreateUserPoolClient", "cognito-idp:CreateUserPoolDomain", "cognito-idp:DescribeUserPool", "cognito-idp:DescribeUserPoolClient", "cognito-idp:ListGroups", "cognito-idp:ListIdentityProviders", "cognito-idp:ListUserPoolClients", "cognito-idp:ListUserPools", "cognito-idp:ListUsers", "cognito-idp:ListUsersInGroup", "cognito-idp:UpdateUserPool", "cognito-idp:UpdateUserPoolClient", "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:CreateVpcEndpoint", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "ec2:DescribeDhcpOptions", "ec2:DescribeNetworkInterfaces", "ec2:DescribeRouteTables", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcEndpoints", "ec2:DescribeVpcs", "ecr:BatchCheckLayerAvailability", "ecr:BatchGetImage", "ecr:CreateRepository", "ecr:Describe*", "ecr:GetAuthorizationToken", "ecr:GetDownloadUrlForLayer", "elasticfilesystem:DescribeFileSystems", "elasticfilesystem:DescribeMountTargets", "fsx:DescribeFileSystems", "glue:CreateJob", "glue:DeleteJob", "glue:GetJob", "glue:GetJobRun", "glue:GetJobRuns", "glue:GetJobs", "glue:ResetJobBookmark", "glue:StartJobRun", "glue:UpdateJob", "groundtruthlabeling:*", "iam:ListRoles", "kms:DescribeKey", "kms:ListAliases", "lambda:ListFunctions", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogGroups", "logs:DescribeLogStreams", "logs:GetLogEvents", "logs:PutLogEvents", "sns:ListTopics" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "logs:CreateLogDelivery", "logs:DeleteLogDelivery", "logs:DescribeResourcePolicies", "logs:GetLogDelivery", "logs:ListLogDeliveries", "logs:PutResourcePolicy", "logs:UpdateLogDelivery" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ecr:SetRepositoryPolicy", "ecr:CompleteLayerUpload", "ecr:BatchDeleteImage", "ecr:UploadLayerPart", "ecr:DeleteRepositoryPolicy", "ecr:InitiateLayerUpload", "ecr:DeleteRepository", "ecr:PutImage" ], "Resource": "arn:aws:ecr:*:*:repository/*sagemaker*" }, { "Effect": "Allow", "Action": [ "codecommit:GitPull", "codecommit:GitPush" ], "Resource": [ "arn:aws:codecommit:*:*:*sagemaker*", "arn:aws:codecommit:*:*:*SageMaker*", "arn:aws:codecommit:*:*:*Sagemaker*" ] }, { "Effect": "Allow", "Action": [ "secretsmanager:ListSecrets" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "secretsmanager:DescribeSecret", "secretsmanager:GetSecretValue", "secretsmanager:CreateSecret" ], "Resource": [ "arn:aws:secretsmanager:*:*:secret:AmazonSageMaker-*" ] }, { "Effect": "Allow", "Action": [ "secretsmanager:DescribeSecret", "secretsmanager:GetSecretValue" ], "Resource": "*", "Condition": { "StringEquals": { "secretsmanager:ResourceTag/SageMaker": "true" } } }, { "Effect": "Allow", "Action": [ "robomaker:CreateSimulationApplication", "robomaker:DescribeSimulationApplication", "robomaker:DeleteSimulationApplication" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "robomaker:CreateSimulationJob", "robomaker:DescribeSimulationJob", "robomaker:CancelSimulationJob" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject", "s3:AbortMultipartUpload", "s3:GetBucketCors", "s3:PutBucketCors" ], "Resource": [ "arn:aws:s3:::*SageMaker*", "arn:aws:s3:::*Sagemaker*", "arn:aws:s3:::*sagemaker*", "arn:aws:s3:::*aws-glue*" ] }, { "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:GetBucketLocation", "s3:ListBucket", "s3:ListAllMyBuckets" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "*", "Condition": { "StringEqualsIgnoreCase": { "s3:ExistingObjectTag/SageMaker": "true" } } }, { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:*:*:function:*SageMaker*", "arn:aws:lambda:*:*:function:*sagemaker*", "arn:aws:lambda:*:*:function:*Sagemaker*", "arn:aws:lambda:*:*:function:*LabelingFunction*" ] }, { "Action": "iam:CreateServiceLinkedRole", "Effect": "Allow", "Resource": "arn:aws:iam::*:role/aws-service-role/sagemaker.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_SageMakerEndpoint", "Condition": { "StringLike": { "iam:AWSServiceName": "sagemaker.application-autoscaling.amazonaws.com" } } }, { "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "*", "Condition": { "StringEquals": { "iam:AWSServiceName": "robomaker.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "sns:Subscribe", "sns:CreateTopic" ], "Resource": [ "arn:aws:sns:*:*:*SageMaker*", "arn:aws:sns:*:*:*Sagemaker*", "arn:aws:sns:*:*:*sagemaker*" ] }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::*:role/*", "Condition": { "StringEquals": { "iam:PassedToService": [ "sagemaker.amazonaws.com", "glue.amazonaws.com", "robomaker.amazonaws.com", "states.amazonaws.com" ] } } } ] }

Autorisation accordée aux utilisateurs pour afficher leurs propres autorisations

Cet exemple montre comment créer une politique qui permet aux utilisateurs IAM d’afficher les politiques en ligne et gérées attachées à leur identité d’utilisateur. Cette politique inclut les autorisations permettant d'effectuer cette action sur la console ou par programmation à l'aide de l'API AWS CLI orAWS.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": ["arn:aws:iam::*:user/${aws:username}"] }, { "Sid": "NavigateInConsole", "Effect": "Allow", "Action": [ "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ] }

Contrôlez la création de ressources d' SageMaker IA à l'aide de clés de condition

Contrôlez l'accès détaillé pour permettre la création de ressources d' SageMaker IA à l'aide de clés de condition spécifiques à l' SageMaker IA. Pour obtenir des informations sur l’utilisation de clés de condition dans des politiques IAM, consultez Éléments de politique JSON IAM : Condition dans le Guide de l’utilisateur IAM.

Les clés de condition, les actions d'API associées et les liens vers la documentation pertinente sont répertoriés dans la section Clés de condition pour l' SageMaker IA dans la référence d'autorisation de service.

Les exemples suivants montrent comment utiliser les clés de condition de l' SageMaker IA pour contrôler l'accès.

Contrôlez l'accès aux ressources de l' SageMaker IA à l'aide des clés de condition du système de fichiers

SageMaker La formation à l'IA fournit une infrastructure sécurisée dans laquelle l'algorithme d'entraînement peut être exécuté, mais dans certains cas, vous souhaiterez peut-être renforcer votre défense en profondeur. Par exemple, vous minimisez le risque d’exécuter du code non approuvé dans votre algorithme ou vous avez des mandats de sécurité spécifiques dans votre organisation. Pour ces scénarios, vous pouvez utiliser les clés de condition spécifiques au service dans l’élément Condition d’une politique IAM pour limiter l’utilisateur à :

  • des systèmes de fichiers spécifiques,

  • des répertoires,

  • des modes d’accès (lecture/écriture, lecture uniquement),

  • groupes de sécurité

Limitation d’un utilisateur IAM à des répertoires et à des modes d’accès spécifiques

La politique suivante limite l'accès des utilisateurs aux /sagemaker/xgboost-dm/validation répertoires /sagemaker/xgboost-dm/train et d'un système de fichiers EFS à ro (lecture seule) : AccessMode

Note

Lorsqu’un répertoire est autorisé, tous ses sous-répertoires sont également accessibles par l’algorithme d’entraînement. Les autorisations POSIX sont ignorées.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AccessToElasticFileSystem", "Effect": "Allow", "Action": [ "sagemaker:CreateTrainingJob", "sagemaker:CreateHyperParameterTuningJob" ], "Resource": "*", "Condition": { "StringEquals": { "sagemaker:FileSystemId": "fs-12345678", "sagemaker:FileSystemAccessMode": "ro", "sagemaker:FileSystemType": "EFS", "sagemaker:FileSystemDirectoryPath": "/sagemaker/xgboost-dm/train" } } }, { "Sid": "AccessToElasticFileSystemValidation", "Effect": "Allow", "Action": [ "sagemaker:CreateTrainingJob", "sagemaker:CreateHyperParameterTuningJob" ], "Resource": "*", "Condition": { "StringEquals": { "sagemaker:FileSystemId": "fs-12345678", "sagemaker:FileSystemAccessMode": "ro", "sagemaker:FileSystemType": "EFS", "sagemaker:FileSystemDirectoryPath": "/sagemaker/xgboost-dm/validation" } } } ] }

Limitation d’un utilisateur à un système de fichiers spécifique

Pour empêcher un algorithme malveillant qui utilise un client d’espace utilisateur d’accéder directement à tout système de fichiers dans votre compte, vous pouvez limiter le trafic réseau. Pour limiter ce trafic, autorisez l’entrée uniquement à partir d’un groupe de sécurité spécifique. Dans l’exemple suivant, l’utilisateur peut uniquement utiliser le groupe de sécurité spécifié pour accéder au système de fichiers :

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AccessToLustreFileSystem", "Effect": "Allow", "Action": [ "sagemaker:CreateTrainingJob", "sagemaker:CreateHyperParameterTuningJob" ], "Resource": "*", "Condition": { "StringEquals": { "sagemaker:FileSystemId": "fs-12345678", "sagemaker:FileSystemAccessMode": "ro", "sagemaker:FileSystemType": "FSxLustre", "sagemaker:FileSystemDirectoryPath": "/fsx/sagemaker/xgboost/train" }, "ForAllValues:StringEquals": { "sagemaker:VpcSecurityGroupIds": [ "sg-12345678" ] } } } ] }

Cet exemple peut limiter un algorithme à un système de fichiers spécifique. Toutefois, cela n’empêche pas un algorithme d’accéder à n’importe quel répertoire de ce système de fichiers à l’aide du client de l’espace utilisateur. Pour pallier à cela, vous pouvez :

  • Vous assurer que le système de fichiers contient uniquement des données auxquelles vous autorisez vos utilisateurs à accéder

  • Créer un rôle IAM qui limite vos utilisateurs au lancement de tâches d’entraînement avec des algorithmes issus de référentiels ECR approuvés

Pour plus d'informations sur l'utilisation des rôles avec l' SageMaker IA, consultez la section Rôles SageMaker IA.

Limitation de l’entraînement à un VPC spécifique

Empêcher un AWS utilisateur de créer des tâches de formation depuis un Amazon VPC. Lorsqu’une tâche d’entraînement est créée au sein d’un VPC, utilisez les journaux de flux VPC pour surveiller l’ensemble du trafic vers et depuis le cluster d’entraînement. Pour obtenir des informations sur l’utilisation des journaux de flux VPC, consultez Journaux de flux VPC dans le Guide de l’utilisateur Amazon Virtual Private Cloud.

La politique suivante impose la création d'une tâche d'entraînement par un utilisateur appelant CreateTrainingJob depuis un VPC :

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowFromVpc", "Effect": "Allow", "Action": [ "sagemaker:CreateTrainingJob", "sagemaker:CreateHyperParameterTuningJob" ], "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "sagemaker:VpcSubnets": ["subnet-a1234"], "sagemaker:VpcSecurityGroupIds": ["sg12345", "sg-67890"] }, "Null": { "sagemaker:VpcSubnets": "false", "sagemaker:VpcSecurityGroupIds": "false" } } } ] }

Restriction de l’accès aux types de main-d’œuvre pour les tâches d’étiquetage Ground Truth et les flux de vérification humaine Amazon A2I

Les équipes de travail Amazon SageMaker Ground Truth et Amazon Augmented AI appartiennent à l'un des trois types de personnel suivants :

  • public (avec Amazon Mechanical Turk)

  • privé

  • fournisseur

Vous pouvez restreindre l’accès des utilisateurs à une équipe de travail spécifique à l’aide de l’un de ces types ou de l’ARN de l’équipe de travail. Pour ce faire, utilisez sagemaker:WorkteamType and/or les touches de sagemaker:WorkteamArn condition. Pour la clé de condition sagemaker:WorkteamType, utilisez les opérateurs de condition de chaîne. Pour la clé de condition sagemaker:WorkteamArn, utilisez les opérateurs de condition Amazon Resource Name (ARN). Si l'utilisateur tente de créer une tâche d'étiquetage avec une équipe de travail restreinte, SageMaker AI renvoie un message d'erreur de refus d'accès.

Les politiques ci-dessous illustrent différentes façons d’utiliser sagemaker:WorkteamType et les clés de condition sagemaker:WorkteamArn avec des opérateurs de condition appropriés et des valeurs de condition valides.

L’exemple suivant utilise la clé de condition sagemaker:WorkteamType avec l’opérateur de condition StringEquals pour restreindre l’accès à une équipe de travail public. Il accepte les valeurs de condition au format suivant :workforcetype-crowd, où workforcetype peut être égal à publicprivate, ouvendor.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "RestrictWorkteamType", "Effect": "Deny", "Action": "sagemaker:CreateLabelingJob", "Resource": "*", "Condition": { "StringEquals": { "sagemaker:WorkteamType": "public-crowd" } } } ] }

Les politiques suivantes montrent comment restreindre l’accès à une équipe de travail public à l’aide de la clé de condition sagemaker:WorkteamArn. Le premier montre comment l’utiliser avec une expression régulière IAM valide de l’ARN de l’équipe de travail et l’opérateur de condition ArnLike. La seconde montre comment l’utiliser avec l’opérateur de condition ArnEquals et l’ARN de l’équipe de travail.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "RestrictWorkteamType", "Effect": "Deny", "Action": "sagemaker:CreateLabelingJob", "Resource": "*", "Condition": { "ArnLike": { "sagemaker:WorkteamArn": "arn:aws:sagemaker:*:*:workteam/public-crowd/*" } } } ] }
JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "RestrictWorkteamType", "Effect": "Deny", "Action": "sagemaker:CreateLabelingJob", "Resource": "*", "Condition": { "ArnEquals": { "sagemaker:WorkteamArn": "arn:aws:sagemaker:us-west-2:394669845002:workteam/public-crowd/default" } } } ] }

Application du chiffrement des données d’entrée

La politique suivante interdit à un utilisateur de spécifier une AWS KMS clé pour chiffrer les données d'entrée à l'aide de la clé de sagemaker:VolumeKmsKey condition lors de la création :

  • entraînement

  • réglage des hyperparamètres

  • tâches d’étiquetage

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "EnforceEncryption", "Effect": "Allow", "Action": [ "sagemaker:CreateTrainingJob", "sagemaker:CreateHyperParameterTuningJob", "sagemaker:CreateLabelingJob", "sagemaker:CreateFlowDefinition" ], "Resource": "*", "Condition": { "ArnEquals": { "sagemaker:VolumeKmsKey": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } } } ] }

Application de l’isolement du réseau pour les tâches d’entraînement

La politique suivante impose à un utilisateur d'activer l'isolement du réseau lors de la création de tâches d'entraînement à l'aide de la clé de condition sagemaker:NetworkIsolation :

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "EnforceIsolation", "Effect": "Allow", "Action": [ "sagemaker:CreateTrainingJob", "sagemaker:CreateHyperParameterTuningJob" ], "Resource": "*", "Condition": { "Bool": { "sagemaker:NetworkIsolation": "true" } } } ] }

Application d’un type d’instance spécifique pour les tâches d’entraînement

La politique suivante impose à un utilisateur d’utiliser un type d’instance spécifique lors de la création de tâches d’entraînement à l’aide de la clé de condition sagemaker:InstanceTypes :

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "EnforceInstanceType", "Effect": "Allow", "Action": [ "sagemaker:CreateTrainingJob", "sagemaker:CreateHyperParameterTuningJob" ], "Resource": "*", "Condition": { "ForAllValues:StringLike": { "sagemaker:InstanceTypes": ["ml.c5.*"] } } } ] }

Application de la désactivation de l’accès Internet et de l’accès racine pour la création d’instances de bloc-notes

Vous pouvez désactiver l’accès Internet et l’accès racine aux instances de bloc-notes pour mieux les sécuriser. Pour en savoir plus sur le contrôle de l’accès racine à une instance de bloc-notes, consultez Contrôler l'accès root à une instance de SageMaker bloc-notes. Pour en savoir plus sur la désactivation de l’accès à Internet pour une instance de bloc-notes, consultez Connecter une instance de bloc-notes dans un VPC à des ressources externes.

La politique suivante exige qu’un utilisateur désactive l’accès réseau lors de la création de l’instance, et désactive l’accès racine lors de la création ou de la mise à jour d’une instance de bloc-notes.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "LockDownCreateNotebookInstance", "Effect": "Allow", "Action": [ "sagemaker:CreateNotebookInstance" ], "Resource": "*", "Condition": { "StringEquals": { "sagemaker:DirectInternetAccess": "Disabled", "sagemaker:RootAccess": "Disabled" }, "Null": { "sagemaker:VpcSubnets": "false", "sagemaker:VpcSecurityGroupIds": "false" } } }, { "Sid": "LockDownUpdateNotebookInstance", "Effect": "Allow", "Action": [ "sagemaker:UpdateNotebookInstance" ], "Resource": "*", "Condition": { "StringEquals": { "sagemaker:RootAccess": "Disabled" } } } ] }

Contrôlez l'accès à l'API SageMaker AI en utilisant des politiques basées sur l'identité

Pour contrôler l'accès aux appels d'API d' SageMaker IA et aux appels aux points de terminaison hébergés par l' SageMaker IA, utilisez des politiques IAM basées sur l'identité.

Limitez l'accès à l' SageMaker API et à l'environnement d'exécution de l'IA aux appels provenant de votre VPC

Si vous configurez un point de terminaison d'interface dans votre VPC, les personnes extérieures au VPC peuvent se connecter à l'API SageMaker AI et exécuter sur Internet. Pour éviter cela, attachez une politique IAM qui restreint l’accès aux appels provenant du VPC. Ces appels doivent être limités à tous les utilisateurs et groupes ayant accès à vos ressources d' SageMaker IA. Pour plus d'informations sur la création d'un point de terminaison d'interface VPC pour l'API SageMaker AI et le runtime, consultez. Connectez-vous à l' SageMaker IA au sein de votre VPC

Important

Si vous appliquez une politique IAM similaire à l'une des suivantes, les utilisateurs ne peuvent pas accéder à l' SageMaker IA spécifiée APIs via la console.

Pour restreindre l’accès aux seules connexions effectuées depuis votre VPC, créez une politique Gestion des identités et des accès AWS qui restreint l’accès. Cet accès doit être limité aux seuls appels provenant de votre VPC. Ajoutez ensuite cette politique à chaque Gestion des identités et des accès AWS utilisateur, groupe ou rôle utilisé pour accéder à l'API ou au runtime SageMaker AI.

Note

Cette politique autorise les connexions uniquement pour les mandataires dans un sous-réseau où vous avez créé un point de terminaison d’interface.

JSON
{ "Id": "api-example-1", "Version":"2012-10-17", "Statement": [ { "Sid": "EnableAPIAccess", "Effect": "Allow", "Action": [ "sagemaker:*" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceVpc": "vpc-111bbaaa" } } } ] }

Pour limiter l’accès à l’API aux seuls appels effectués à l’aide du point de terminaison d’interface, utilisez la clé de condition aws:SourceVpce à la place de aws:SourceVpc :

JSON
{ "Id": "api-example-1", "Version":"2012-10-17", "Statement": [ { "Sid": "EnableAPIAccess", "Effect": "Allow", "Action": [ "sagemaker:CreatePresignedNotebookInstanceUrl" ], "Resource": "*", "Condition": { "StringEquals": { "aws:sourceVpce": [ "vpce-111bbccc", "vpce-111bbddd" ] } } } ] }

Limitez l'accès à l'API SageMaker AI et aux appels d'exécution par adresse IP

Vous pouvez autoriser l'accès aux appels d'API SageMaker AI et aux invocations d'exécution uniquement à partir des adresses IP figurant dans une liste que vous spécifiez. Pour ce faire, créez une politique IAM qui refuse l’accès à l’API à moins que l’appel provienne d’une adresse IP de la liste. Attachez ensuite cette politique à chaque Gestion des identités et des accès AWS utilisateur, groupe ou rôle utilisé pour accéder à l'API ou à l'environnement d'exécution. Pour obtenir des informations sur la création de politiques IAM, consultez Création de politiques IAM dans le Guide de l’utilisateur Gestion des identités et des accès AWS.

Pour spécifier la liste des adresses IP ayant accès à l’appel d’API, utilisez :

  • l’opérateur de condition IpAddress,

  • la clé de contexte de condition aws:SourceIP.

Pour obtenir des informations sur les opérateurs de condition IAM, consultez Éléments de politique JSON IAM : Opérateurs de condition dans le Guide de l’utilisateur Gestion des identités et des accès AWS. Pour obtenir des informations sur les clés de contexte de condition IAM, consultez Clés de contexte de condition globale AWS.

Par exemple, la politique suivante autorise l’accès à CreateTrainingJob uniquement depuis des adresses IP dans les plages 192.0.2.0-192.0.2.255 et 203.0.113.0-203.0.113.255 :

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sagemaker:CreateTrainingJob", "Resource": "*", "Condition": { "IpAddress": { "aws:SourceIp": [ "192.0.2.0/24", "203.0.113.0/24" ] } } } ] }

Limitation de l’accès à une instance de bloc-notes par adresse IP

Vous pouvez autoriser l’accès à une instance de bloc-notes uniquement à partir des adresses IP figurant dans une liste que vous spécifiez. Pour ce faire, créez une politique IAM qui refuse l’accès à CreatePresignedNotebookInstanceUrl à moins que l’appel provienne d’une adresse IP de la liste. Attachez ensuite cette politique à chaque Gestion des identités et des accès AWS utilisateur, groupe ou rôle utilisé pour accéder à l'instance du bloc-notes. Pour obtenir des informations sur la création de politiques IAM, consultez Création de politiques IAM dans le Guide de l’utilisateur Gestion des identités et des accès AWS.

Pour spécifier la liste des adresses IP que vous souhaitez voir accéder à l’instance de bloc-notes, utilisez :

  • l’opérateur de condition IpAddress,

  • la clé de contexte de condition aws:SourceIP.

Pour obtenir des informations sur les opérateurs de condition IAM, consultez Éléments de politique JSON IAM : Opérateurs de condition dans le Guide de l’utilisateur Gestion des identités et des accès AWS. Pour obtenir des informations sur les clés de contexte de condition IAM, consultez Clés de contexte de condition globale AWS.

Par exemple, la politique suivante autorise l'accès à une instance de bloc-notes uniquement depuis des adresses IP dans les plages 192.0.2.0-192.0.2.255 et 203.0.113.0-203.0.113.255 :

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sagemaker:CreatePresignedNotebookInstanceUrl", "Resource": "*", "Condition": { "IpAddress": { "aws:SourceIp": [ "192.0.2.0/24", "203.0.113.0/24" ] } } } ] }

La politique restreint l’accès à l’appel vers CreatePresignedNotebookInstanceUrl et à l’URL renvoyée par l’appel. La stratégie restreint également l’accès pour ouvrir une instance bloc-notes dans la console. Il est appliqué à chaque requête et WebSocket trame HTTP qui tente de se connecter à l'instance du bloc-notes.

Note

L'utilisation de cette méthode pour filtrer par adresse IP est incompatible lors de la connexion à l' SageMaker IA via un point de terminaison d'interface VPC. . Pour obtenir des informations sur la restriction d’accès à une instance de bloc-notes lors de la connexion via un point de terminaison d’interface VPC, consultez Connexion à une instance de bloc-notes via un point de terminaison d’interface VPC..

Contrôlez l'accès aux ressources de SageMaker l'IA à l'aide de balises

Spécifiez des balises dans une politique IAM pour contrôler l'accès à des groupes de ressources d' SageMaker IA. Utilisez des balises pour mettre en œuvre le contrôle d’accès par attributs (ABAC). L'utilisation de balises vous permet de partitionner l'accès aux ressources entre des groupes d'utilisateurs spécifiques. Vous pouvez avoir une équipe ayant accès à un groupe de ressources et une autre équipe ayant accès à un autre ensemble de ressources. Vous pouvez fournir des conditions ResourceTag dans des politiques IAM pour fournir un accès à chaque groupe.

Note

Les politiques basées sur des balises ne peuvent pas restreindre les appels d’API suivants :

  • DeleteImageVersion

  • DescribeImageVersion

  • ListAlgorithms

  • ListCodeRepositories

  • ListCompilationJobs

  • ListEndpointConfigs

  • ListEndpoints

  • ListFlowDefinitions

  • ListHumanTaskUis

  • ListHyperparameterTuningJobs

  • ListLabelingJobs

  • ListLabelingJobsForWorkteam

  • ListModelPackages

  • ListModels

  • ListNotebookInstanceLifecycleConfigs

  • ListNotebookInstances

  • ListSubscribedWorkteams

  • ListTags

  • ListProcessingJobs

  • ListTrainingJobs

  • ListTrainingJobsForHyperParameterTuningJob

  • ListTransformJobs

  • ListWorkteams

  • Recherche

Un exemple simple peut vous aider à comprendre comment utiliser les balises pour partitionner les ressources. Supposons que vous ayez défini deux groupes IAM différents, nommés DevTeam1 etDevTeam2, dans votre AWS compte. Vous avez également créé 10 instances de bloc-notes. Vous utilisez 5 instances de bloc-notes pour un projet. Vous utilisez les 5 autres pour un second projet. Vous pouvez fournir à DevTeam1 des autorisations pour effectuer des appels d'API sur les instances de bloc-notes que vous utilisez pour le premier projet. Vous pouvez autoriser DevTeam2 à effectuer des appels d'API sur les instances de bloc-notes utilisées pour le second projet.

La procédure suivante fournit un exemple simple qui vous aidera à comprendre le concept d'ajout de balises. Vous pouvez l'utiliser pour implémenter la solution décrite dans le paragraphe précédent.

Pour contrôler l’accès aux appels d’API (exemple)
  1. Ajoutez une balise avec la clé Project et la valeur A aux instances de bloc-notes utilisées pour le premier projet. Pour plus d'informations sur l'ajout de balises aux ressources d' SageMaker IA, consultez AddTags.

  2. Ajoutez une balise avec la clé Project et la valeur B aux instances de bloc-notes utilisées pour le second projet.

  3. Créez une politique IAM avec une condition ResourceTag qui refuse l’accès aux instances de bloc-notes utilisées pour le second projet. Attachez ensuite cette politique à DevTeam1. L’exemple de politique suivant refuse tous les appels d’API sur n’importe quelle instance de bloc-notes avec une balise dotée d’une clé Project et d’une valeur B :

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sagemaker:*", "Resource": "*" }, { "Effect": "Deny", "Action": "sagemaker:*", "Resource": "*", "Condition": { "StringEquals": { "sagemaker:ResourceTag/Project": "B" } } }, { "Effect": "Deny", "Action": [ "sagemaker:AddTags", "sagemaker:DeleteTags" ], "Resource": "*" } ] }

    Pour obtenir des informations sur la création de politiques IAM et leur attachement à des identités, consultez Contrôle de l’accès à l’aide des politiques dans le Guide de l’utilisateur Gestion des identités et des accès AWS.

  4. Créez une politique IAM avec une condition ResourceTag qui refuse l’accès aux instances de bloc-notes utilisées pour le premier projet. Attachez ensuite cette politique à DevTeam2. L’exemple de politique suivant refuse tous les appels d’API sur n’importe quelle instance de bloc-notes avec une balise dotée d’une clé Project et d’une valeur A :

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sagemaker:*", "Resource": "*" }, { "Effect": "Deny", "Action": "sagemaker:*", "Resource": "*", "Condition": { "StringEquals": { "sagemaker:ResourceTag/Project": "A" } } }, { "Effect": "Deny", "Action": [ "sagemaker:AddTags", "sagemaker:DeleteTags" ], "Resource": "*" } ] }

Fournir des autorisations pour le balisage des ressources d' SageMaker IA

Les balises sont des étiquettes de métadonnées que vous pouvez associer à certaines AWS ressources. Une balise se compose d’une paire clé-valeur qui fournit un moyen flexible d’annoter les ressources à l’aide d’attributs de métadonnées pour divers cas d’utilisation de balisage, notamment :

Ils peuvent être utilisés dans les autorisations et les politiques, les quotas de service et les intégrations avec d'autres AWS services. Les balises peuvent être définies par l'utilisateur ou AWS générées lors de la création de ressources. Cela dépend de si un utilisateur spécifie manuellement des balises personnalisées ou de si un service AWS génère automatiquement une balise.

  • Balises définies par l'utilisateur dans l' SageMaker IA : les utilisateurs peuvent ajouter des balises lorsqu'ils créent des ressources d' SageMaker IA à l'aide SageMaker SDKs de la AWS CLI CLI SageMaker APIs, de la console SageMaker AI ou de CloudFormation modèles.

    Note

    Les balises définies par l’utilisateur peuvent être remplacées si une ressource est mise à jour ultérieurement et que la valeur de la balise est modifiée ou remplacée. Par exemple, une tâche d’entraînement créée avec {Équipe : A} peut être incorrectement mise à jour et nouvellement étiquetée en tant que {Équipe : B}. Cela peut entraîner une attribution incorrecte des autorisations autorisées. Par conséquent, il convient de faire preuve de prudence lorsque vous autorisez des utilisateurs ou des groupes à ajouter des balises, car ils peuvent être en mesure de remplacer les valeurs existantes des balises. La bonne pratique consiste à cibler étroitement les autorisations de balisage et à utiliser les conditions IAM pour contrôler les capacités de balisage.

  • AWSbalises générées dans l' SageMaker IA : SageMaker L'IA balise automatiquement certaines ressources qu'elle crée. Par exemple, Studio et Studio Classic attribuent automatiquement la sagemaker:domain-arn balise aux ressources d' SageMaker IA qu'ils créent. Le balisage de nouvelles ressources avec l'ARN du domaine permet de suivre l'origine des ressources d' SageMaker IA telles que les tâches de formation, les modèles et les points de terminaison. Pour un contrôle et un suivi plus précis, les nouvelles ressources reçoivent des balises supplémentaires telles que :

    • sagemaker:user-profile-arn : l’ARN du profil utilisateur qui a créé la ressource. Cela permet de suivre les ressources créées par des utilisateurs spécifiques.

    • sagemaker:space-arn : l’ARN de l’espace dans lequel la ressource a été créée. Cela permet de regrouper et d’isoler les ressources par espace.

    Note

    AWSles balises générées ne peuvent pas être modifiées par les utilisateurs.

Pour obtenir des informations générales sur le balisage AWS des ressources et les meilleures pratiques, consultez la section Marquage de vos AWS ressources. Pour en savoir plus sur les principaux cas d’utilisation du balisage, consultez Cas d’utilisation du balisage.

Autoriser l'ajout de balises lors de la création de ressources d' SageMaker IA

Vous pouvez autoriser les utilisateurs (balises définies par l'utilisateur) ou Studio et Studio Classic (balises AWS générées) à ajouter des balises sur les nouvelles ressources d' SageMaker IA au moment de leur création. Pour ce faire, leurs autorisations IAM doivent inclure à la fois :

  • L' SageMaker IA de base crée une autorisation pour ce type de ressource.

  • l’autorisation sagemaker:AddTags.

Par exemple, pour permettre à un utilisateur de créer une tâche de SageMaker formation et de l'étiqueter, il faudrait lui accorder des autorisations pour sagemaker:CreateTrainingJob etsagemaker:AddTags.

Important

Les politiques IAM personnalisées qui permettent à Amazon SageMaker Studio ou Amazon SageMaker Studio Classic de créer des ressources Amazon SageMaker AI doivent également accorder des autorisations pour ajouter des balises à ces ressources. L’autorisation d’ajouter des balises aux ressources est requise, car Studio et Studio Classic balisent automatiquement toutes les ressources qu’ils créent. Si une politique IAM autorise Studio et Studio Classic à créer des ressources mais n'autorise pas le balisage, des erreurs « AccessDenied » peuvent se produire lors de la tentative de création de ressources.

AWSpolitiques gérées pour Amazon SageMaker AIqui donnent des autorisations pour créer des ressources d' SageMaker IA incluent déjà des autorisations pour ajouter des balises lors de la création de ces ressources.

Les administrateurs attachent ces autorisations IAM à l’un ou l’autre des éléments suivants :

  • AWSRôles IAM attribués à l'utilisateur pour les balises définies par l'utilisateur

  • Rôle d’exécution utilisé par Studio ou Studio Classic pour les balises générées par AWS

Pour obtenir des instructions de création et d’application de politiques IAM personnalisées, consultez Création de politiques IAM (console).

Note

La liste des opérations de création de ressources d' SageMaker IA se trouve dans la documentation de l'SageMaker API en recherchant les actions commençant parCreate. Celles-ci créent des actions, telles que CreateTrainingJob etCreateEndpoint, sont les opérations qui créent de nouvelles ressources d' SageMaker IA.

Ajout d’autorisations de balise à certaines actions de création

Vous accordez l’autorisation sagemaker:AddTags avec des contraintes en attachant une politique IAM supplémentaire à la politique de création de ressources d’origine. L'exemple de politique suivant autorisesagemaker:AddTags, mais ne le limite qu'à certaines actions de création de ressources SageMaker AI, telles queCreateTrainingJob.

{ "Sid": "AllowAddTagsForCreateOperations", "Effect": "Allow", "Action": [ "sagemaker:AddTags" ], "Resource": "*", "Condition": { "StringEquals": { "sagemaker:TaggingAction": "CreateTrainingJob" } } }

La condition de politique restreint sagemaker:AddTags à être utilisée parallèlement à des actions de création spécifiques. Dans cette approche, la politique d’autorisation de création reste intacte tandis qu’une politique supplémentaire fournit l’accès sagemaker:AddTags restreint. Cette condition empêche l’autorisation générale sagemaker:AddTags en la limitant aux actions de création nécessitant un balisage. Cela implémente le moindre privilège sagemaker:AddTags en ne l'autorisant que pour des cas d'utilisation spécifiques de création de ressources d' SageMaker IA.

Exemple : permettre l’autorisation des balises à l’échelle mondiale et restreindre les actions de création à un domaine

Dans cet exemple de politique IAM personnalisée, les deux premières instructions illustrent l’utilisation de balises pour suivre la création de ressources. Cela autorise l’action sagemaker:CreateModel sur toutes les ressources et le balisage de ces ressources lorsque cette action est utilisée. La troisième instruction montre comment les valeurs des balises peuvent être utilisées pour contrôler les opérations sur les ressources. Dans ce cas, cela empêche de créer des ressources d' SageMaker IA étiquetées avec un ARN de domaine spécifique, en limitant l'accès en fonction de la valeur de la balise.

En particulier :

  • La première instruction autorise l’action CreateModel sur n’importe quelle ressource (*).

  • La deuxième instruction autorise l’action sagemaker:AddTags, mais uniquement lorsque la clé de condition sagemaker:TaggingAction est égale à CreateModel. Cela limite l’action sagemaker:AddTags uniquement aux périodes où elle est utilisée pour étiqueter un modèle nouvellement créé.

  • La troisième déclaration refuse toute action SageMaker AI create (Create*) sur une ressource (*), mais uniquement lorsque la ressource possède une balise sagemaker:domain-arn égale à un ARN de domaine spécifique,domain-arn.

{ "Statement":[ { "Effect":"Allow", "Action":[ "sagemaker:CreateModel" ], "Resource":"*" }, { "Effect":"Allow", "Action":[ "sagemaker:AddTags" ], "Resource":"*", "Condition":{ "String":{ "sagemaker:TaggingAction":[ "CreateModel" ] } } }, { "Sid":"IsolateDomain", "Effect":"Deny", "Resource":"*", "Action":[ "sagemaker:Create*" ], "Condition":{ "StringEquals":{ "aws:ResourceTag/sagemaker:domain-arn":"domain-arn" } } } ] }

Limitation de l’accès aux ressources consultables avec des conditions de visibilité

Utilisez les conditions de visibilité pour limiter l'accès de vos utilisateurs à des ressources balisées spécifiques au sein d'un AWS compte. Vos utilisateurs ne peuvent accéder qu’aux ressources pour lesquelles ils disposent d’autorisations. Lorsque vos utilisateurs effectuent des recherches dans leurs ressources, ils peuvent limiter les résultats de recherche à des ressources spécifiques.

Vous souhaiterez peut-être que vos utilisateurs ne voient et n'interagissent qu'avec les ressources associées à des domaines Amazon SageMaker Studio ou Amazon SageMaker Studio Classic spécifiques. Vous pouvez utiliser les conditions de visibilité pour limiter leur accès à un ou à plusieurs domaines.

{ "Sid": "SageMakerApis", "Effect": "Allow", "Action": "sagemaker:Search", "Resource": "*", "Condition": { "StringEquals": { "sagemaker:SearchVisibilityCondition/Tags.sagemaker:example-domain-arn/EqualsIfExists": "arn:aws:sagemaker:Région AWS:111122223333:domain/example-domain-1", "sagemaker:SearchVisibilityCondition/Tags.sagemaker:example-domain-arn/EqualsIfExists": "arn:aws:sagemaker:Région AWS:111122223333:domain/example-domain-2" } } }

Le format général d’une condition de visibilité est "sagemaker:SearchVisibilityCondition/Tags.key": "value". Vous pouvez fournir la paire clé-valeur pour n’importe quelle ressource étiquetée.

{ "MaxResults": number, "NextToken": "string", "Resource": "string", # Required Parameter "SearchExpression": { "Filters": [ { "Name": "string", "Operator": "string", "Value": "string" } ], "NestedFilters": [ { "Filters": [ { "Name": "string", "Operator": "string", "Value": "string" } ], "NestedPropertyName": "string" } ], "Operator": "string", "SubExpressions": [ "SearchExpression" ] }, "IsCrossAccount": "string", "VisibilityConditions" : [ List of conditions for visibility {"Key": "Tags.sagemaker:example-domain-arn", "Value": "arn:aws:sagemaker:Région AWS:111122223333:domain/example-domain-1"}, {"Key": "Tags.sagemaker:example-domain-arn", "Value": "arn:aws:sagemaker:Région AWS:111122223333:domain/example-domain-2"} ] ], "SortBy": "string", "SortOrder": "string" }

La condition de visibilité utilise le même formatage "sagemaker:SearchVisibilityCondition/Tags.key": "value" que celui spécifié dans la politique. Vos utilisateurs peuvent spécifier les paires clé-valeur utilisées pour n’importe quelle ressource étiquetée.

Si un utilisateur inclut le paramètre VisibilityConditions dans sa demande Search, mais que la stratégie d’accès qui s’applique à cet utilisateur ne contient aucune clé de condition correspondante ayant été spécifiée dans VisibilityConditions, la demande Search est toujours autorisée et sera exécutée.

Si aucun paramètre VisibilityConditions n’est spécifié dans la demande d’API Search de l’utilisateur, mais que la stratégie d’accès qui s’applique à cet utilisateur contient des clés de condition associées à VisibilityConditions, la demande Search de cet utilisateur est refusée.