Exemplos de políticas SageMaker baseadas em identidade da Amazon - Amazon SageMaker

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Exemplos de políticas SageMaker baseadas em identidade da Amazon

Por padrão, os usuários e os perfis do IAM não têm permissão para criar ou modificar recursos do SageMaker . Eles também não podem executar tarefas usando o AWS Management Console, a AWS CLI ou uma API da AWS. Um administrador do IAM deve criar políticas do IAM que concedam aos usuários e perfis permissão para executarem operações de API específicas nos recursos especificados de que precisam. O administrador deve anexar essas políticas aos usuários ou grupos do IAM que exigem essas permissões. Para saber como anexar políticas a um usuário ou grupo do IAM, consulte Adicionar e remover permissões de identidade do IAM no Guia do usuário do IAM.

Para saber como criar uma política baseada em identidade do IAM usando esses exemplos de documentos de política JSON, consulte Criar políticas na guia JSON no Guia do usuário do IAM.

Melhores práticas de políticas

As políticas baseadas em identidade determinam se alguém pode criar, acessar ou excluir SageMaker recursos em sua conta. Essas ações podem incorrer em custos para a Conta da AWS. Ao criar ou editar políticas baseadas em identidade, siga estas diretrizes e recomendações:

  • Comece com AWS as políticas gerenciadas pela e avance para as permissões de privilégio mínimo: para começar a conceder permissões a seus usuários e workloads, use as AWS políticas gerenciadas pela que concedem permissões para muitos casos de uso comuns. Elas estão disponíveis na sua Conta da AWS. Recomendamos que você reduza ainda mais as permissões definindo políticas gerenciadas pelo cliente da AWS específicas para seus casos de uso. Para obter mais informações, consulte Políticas gerenciadas pela AWS ou Políticas gerenciadas pela AWS para perfis de trabalho no Guia do usuário do IAM.

  • Aplique permissões de privilégio mínimo: ao definir permissões com as políticas do IAM, conceda apenas as permissões necessárias para executar uma tarefa. Você faz isso definindo as ações que podem ser executadas em recursos específicos sob condições específicas, também conhecidas como permissões de privilégio mínimo. Para obter mais informações sobre como usar o IAM para aplicar permissões, consulte Políticas e permissões no IAM no Guia do usuário do IAM.

  • Use condições nas políticas do IAM para restringir ainda mais o acesso: é possível adicionar uma condição às políticas para limitar o acesso a ações e recursos. Por exemplo, é possível escrever uma condição de política para especificar que todas as solicitações devem ser enviadas usando SSL. É possível também usar condições para conceder acesso a ações de serviço, se elas forem usadas por meio de um AWS service (Serviço da AWS) específico, como o AWS CloudFormation. Para obter mais informações, consulte Elementos de política JSON do IAM: Condição no Manual do usuário do IAM.

  • Use o IAM Access Analyzer para validar suas políticas do IAM a fim de garantir permissões seguras e funcionais: o IAM Access Analyzer valida as políticas novas e existentes para que elas sigam a linguagem de política do IAM (JSON) e as práticas recomendadas do IAM. O IAM Access Analyzer oferece mais de 100 verificações de política e recomendações acionáveis para ajudá-lo a criar políticas seguras e funcionais. Para obter mais informações, consulte Validação de políticas do IAM Access Analyzer no Guia do usuário do IAM.

  • Exigir autenticação multifator (MFA): se houver um cenário que exija usuários do IAM ou um usuário raiz em sua Conta da AWS, ative a MFA para obter segurança adicional. Para exigir MFA quando as operações de API forem chamadas, adicione condições de MFA às suas políticas. Para obter mais informações, consulte Configuração de acesso à API protegido por MFA no Guia do usuário do IAM.

Para obter mais informações sobre as práticas recomendadas do IAM, consulte Práticas recomendadas de segurança no IAM no Guia do usuário do IAM.

Usando o SageMaker console

Para acessar o SageMaker console da Amazon, você deve ter um conjunto mínimo de permissões. Essas permissões dão autorização para que você liste e visualize detalhes sobre os recursos do SageMaker na sua conta da AWS. Se você criar uma política baseada em identidade que seja mais restritiva do que as permissões mínimas necessárias, o console não funcionará como pretendido para entidades (usuários ou perfis) com essa política.

Para garantir que essas entidades ainda possam usar o SageMaker console, anexe também a seguinte política AWS gerenciada às entidades. Para obter mais informações, consulte Adição de permissões a um usuário no Manual do usuário do IAM:

Não é necessário conceder permissões mínimas do console para usuários que fazem chamadas somente à AWS CLI ou à API do AWS. Em vez disso, permita o acesso somente às ações que corresponderem a operação da API que você estiver tentando executar.

Permissões necessárias para usar o Amazon SageMaker Console

A tabela de referência de permissões lista as operações de SageMaker API da Amazon e mostra as permissões necessárias para cada operação. Para obter mais informações sobre as operações de SageMaker API da Amazon, consultePermissões de SageMaker API da Amazon: referência de ações, permissões e recursos.

Para usar o SageMaker console da Amazon, você precisa conceder permissões para ações adicionais. Especificamente, o console precisa de permissões que permitam que as ações ec2 exibam sub-redes, VPCs e security groups. Opcionalmente, o console precisa de permissão para criar funções de execução para tarefas como CreateNotebook, CreateTrainingJob e CreateModel. Conceda essas permissões com a seguinte política de permissões:

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

Permissões necessárias para usar o Amazon SageMaker Ground Truth Console

Para usar o console do Amazon SageMaker Ground Truth, você precisa conceder permissões para recursos adicionais. Especificamente, o console precisa de permissões para o AWS Marketplace visualizar assinaturas, operações do Amazon Cognito para gerenciar sua força de trabalho privada, ações do Amazon S3 para acesso aos seus arquivos de entrada e saída e ações de AWS Lambda para listar e invocar funções. Conceda essas permissões com a seguinte política de permissões:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GroundTruthConsole", "Effect": "Allow", "Action": [ "aws-marketplace:DescribeListings", "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:RunFilterOrSampleManifestJob", "groundtruthlabeling:RunGenerateManifestByCrawlingJob", "lambda:InvokeFunction", "lambda:ListFunctions", "s3:GetObject", "s3:PutObject", "s3:SelectObjectContent" ], "Resource": "*" } ] }

Permissões necessárias para usar o console da Amazon Augmented AI (visualização)

Para usar o console do Augmented AI, é necessário conceder permissões a recursos adicionais. Conceda essas permissões com a seguinte política de permissões:

{ "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:*Environment", "sagemaker:*EnvironmentVersion", "sagemaker:*EnvironmentVersions", "sagemaker:*Environments", "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", "elastic-inference:Connect", "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" ] } } } ] }

Permitir que os usuários visualizem suas próprias permissões

Este exemplo mostra como é possível criar uma política que permite que os usuários do IAM visualizem as políticas gerenciadas e em linha anexadas a sua identidade de usuário. Essa política inclui permissões para concluir essa ação no console ou de forma programática usando a AWS CLI ou a AWS API.

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

Controle a criação de SageMaker recursos com chaves de condição

Controle o acesso refinado para permitir a criação de SageMaker recursos usando chaves de condição SageMaker específicas. Para obter mais informações sobre o uso de chaves de condição em políticas do IAM, consulteElementos de política JSON do IAM: condição no Guia do usuário do IAM.

As chaves de condição, junto com as ações de API relacionadas e os links para a documentação relevante, estão listados nas Chaves de condição do Guia do usuário do IAM. SageMaker

Os exemplos a seguir mostram como usar as chaves de SageMaker condição para controlar o acesso.

Controle o acesso aos SageMaker recursos usando as chaves de condição do sistema de arquivos

SageMaker o treinamento fornece uma infraestrutura segura para a execução do algoritmo de treinamento, mas, em alguns casos, você pode querer uma defesa mais aprofundada. Por exemplo, você minimiza o risco de execução de código não confiável em seu algoritmo ou tem mandatos de segurança específicos em sua organização. Para esses cenários, é possível usar as chaves de condição específicas de serviço no elemento de condição de uma política do IAM para reduzir o escopo do usuário para sistemas de arquivos, diretórios, modos de acesso (leitura/gravação, somente leitura) e grupos de segurança específicos:

Restrinja um usuário do IAM a diretórios e modos de acesso específicos

A política abaixo restringe o usuário aos /sagemaker/xgboost-dm/validation diretórios /sagemaker/xgboost-dm/train e de um sistema de arquivos EFS para ro (somente leitura): AccessMode

nota

Quando um diretório é permitido, todos os subdiretórios também podem ser acessados pelo algoritmo de treinamento. As permissões POSIX são ignoradas.

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

Restringir um usuário a um sistema de arquivos específico

Para evitar que um algoritmo mal-intencionado que usa um cliente de espaço do usuário acesse qualquer sistema de arquivos diretamente em sua conta, você pode restringir o tráfego de rede permitindo a entrada de um grupo de segurança específico. No exemplo a seguir, o usuário do só pode usar o grupo de segurança especificado para acessar o sistema de arquivos:

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

Embora o exemplo acima possa restringir um algoritmo a um sistema de arquivos específico, ele não impede que um algoritmo acesse qualquer diretório dentro desse sistema de arquivos usando o cliente de espaço do usuário. Para atenuar isso:

  • Verifique se o sistema de arquivos contém apenas dados que você permite que usuários do acessem

  • Crie um perfil do IAM que restrinja seus usuários a iniciar trabalhos de treinamento com algoritmos de repositórios do ECR aprovados

Para obter mais informações sobre como usar funções com SageMaker, consulte SageMaker Funções.

Restringir o treinamento a uma VPC específica

Restrinja um usuário da AWS a criar trabalhos de treinamento de dentro de uma Amazon VPC. Quando um trabalho de treinamento é criado em uma VPC, você pode usar os logs de fluxo da VPC para monitorar todo o tráfego de entrada e saída do cluster de treinamento. Para obter informações sobre como usar os logs de fluxo da VPC, consulte Logs de fluxo da VPC no Guia do usuário do Amazon Virtual Private Cloud.

A política a seguir impõe que um trabalho de treinamento seja criado por um usuário chamando CreateTrainingJob de dentro de uma VPC:

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

Restringir o acesso a tipos de força de trabalho para trabalhos de rotulagem do Ground Truth e fluxos de trabalho de revisão humana do Amazon A2I

As equipes de trabalho do Amazon SageMaker Ground Truth e do Amazon Augmented AI se dividem em um dos três tipos de força de trabalho: pública (com o Amazon Mechanical Turk), privada e fornecedora. Para restringir o acesso do usuário a uma equipe de trabalho específica usando um desses tipos ou o ARN da equipe de trabalho, use as chaves de condição sagemaker:WorkteamType e/ou sagemaker:WorkteamArn. Para a chave de condição sagemaker:WorkteamType, use operadores de condição de string. Para a chave de condição sagemaker:WorkteamArn, use os operadores de condição do nome do recurso da Amazon (ARN). Se o usuário tentar criar um trabalho de rotulagem com uma equipe de trabalho restrita, SageMaker retornará um erro de acesso negado.

As políticas abaixo demonstram diferentes maneiras de usar as chaves de condição sagemaker:WorkteamArn e sagemaker:WorkteamType com operadores de condição apropriados e valores de condição válidos.

O exemplo a seguir usa a chave de condição sagemaker:WorkteamType com o operador de condição StringEquals para restringir o acesso a uma equipe de trabalho pública. Ele aceita valores de condição no seguinte formato: workforcetype-crowd, em que workforcetype pode ser igual a public, private ou vendor.

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

As políticas a seguir mostram como restringir o acesso a uma equipe de trabalho pública usando a chave de condição sagemaker:WorkteamArn. O primeiro mostra como usá-lo com um regex-variant válido do IAM do ARN da equipe de trabalho e o operador de condição ArnLike. O segundo mostra como usá-lo com o operador de condição ArnEquals e o ARN da equipe de trabalho.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RestrictWorkteamType", "Effect": "Deny", "Action": "sagemaker:CreateLabelingJob", "Resource": "*", "Condition": { "ArnLike": { "sagemaker:WorkteamArn": "arn:aws:sagemaker:*:*:workteam/public-crowd/*" } } } ] }
{ "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" } } } ] }

Impor a criptografia dos dados de entrada

A política a seguir restringe um usuário para especificar uma chave do AWS KMS para criptografar dados de entrada ao criar trabalhos de rotulagem de ajuste de hiperparâmetros e de treinamento usando a chave de condição sagemaker:VolumeKmsKey:

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

Impor a criptografia do volume de armazenamento de instâncias de caderno

A política a seguir restringe um usuário para especificar uma chave do AWS KMS para criptografar o volume de armazenamento anexado ao criar ou atualizar uma instância de caderno usando a chave de condição sagemaker:VolumeKmsKey:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceEncryption", "Effect": "Allow", "Action": [ "sagemaker:CreateNotebookInstance" ], "Resource": "*", "Condition": { "ArnLike": { "sagemaker:VolumeKmsKey": "*key/volume-kms-key-12345" } } } ] }

Impor o isolamento da rede para trabalhos de treinamento

A política a seguir restringe um usuário para habilitar o isolamento de rede ao criar trabalhos de treinamento usando a chave de condição sagemaker:NetworkIsolation:

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

Impor um tipo de instância específico para trabalhos de treinamento

A política a seguir restringe um usuário a usar um tipo de instância específico ao criar trabalhos de treinamento usando a chave de condição sagemaker:InstanceTypes:

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

Impor um acelerador de EI específico para trabalhos de treinamento

A política a seguir restringe um usuário a usar um acelerador de inferência elástica (EI) específico, se um acelerador for fornecido, ao criar ou atualizar instâncias de caderno e ao criar configurações de endpoint usando a chave de condição sagemaker:AcceleratorTypes:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceAcceleratorType", "Effect": "Allow", "Action": [ "sagemaker:CreateNotebookInstance", "sagemaker:UpdateNotebookInstance", "sagemaker:CreateEndpointConfig" ], "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "sagemaker:AcceleratorTypes": ["ml.eia1.medium"] } } } ] }

Impor a desativação do acesso à Internet e o acesso raiz para criar instâncias de caderno

Você pode desabilitar o acesso à Internet e o acesso raiz a instâncias de caderno para ajudar a torná-las mais seguras. Para obter informações sobre como controlar o acesso raiz a uma instância de bloco de anotações, consulte Controle o acesso root a uma instância do SageMaker notebook. Para obter informações sobre como desabilitar o acesso à Internet para uma instância de caderno, consulte Conectar uma instância de caderno em uma VPC aos recursos externos.

A política a seguir requer que um usuário desative o acesso à rede ao criar uma instância e desative o acesso raiz ao criar ou atualizar uma instância de caderno.

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

Controle o acesso à SageMaker API usando políticas baseadas em identidade

Para controlar o acesso a chamadas de SageMaker API e chamadas a endpoints SageMaker hospedados, use políticas de IAM baseadas em identidade.

Restrinja o acesso à SageMaker API e ao tempo de execução às chamadas de dentro da sua VPC

Se você configurar um endpoint de interface na sua VPC, indivíduos fora da VPC ainda poderão se conectar à API e ao tempo de execução pela Internet, SageMaker a menos que você anexe uma política do IAM que restrinja o acesso às chamadas provenientes da VPC a todos os usuários e grupos que têm acesso aos seus recursos. SageMaker Para obter informações sobre como criar um endpoint de interface VPC para a SageMaker API e o tempo de execução, consulte. Conecte-se à SageMaker sua VPC

Importante

Se você aplicar uma política do IAM semelhante a uma das seguintes, os usuários não poderão acessar as SageMaker APIs especificadas por meio do console.

Para restringir o acesso apenas conexões feitas de dentro da sua VPC, crie uma política do AWS Identity and Access Management que restringe o acesso apenas às chamadas que vêm de dentro da sua VPC. Em seguida, adicione essa política a cada AWS Identity and Access Management usuário, grupo ou função usada para acessar a SageMaker API ou o tempo de execução.

nota

Essa política permite conexões somente para chamadores em uma sub-rede na qual você criou um endpoint de interface.

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

Se você quiser restringir o acesso à API apenas para chamadas feitas usando o endpoint de interface, use a chave de condição aws:SourceVpce, em vez de aws:SourceVpc:

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

Limite o acesso à SageMaker API e às chamadas de tempo de execução por endereço IP

Para permitir acesso a chamadas de SageMaker API e invocações de tempo de execução somente de endereços IP em uma lista especificada por você, anexe uma política do IAM que negue acesso à API, a menos que a chamada venha de um endereço IP na lista para cada AWS Identity and Access Management usuário, grupo ou função usada para acessar a API ou o tempo de execução. Para obter informações sobre a criação de políticas do IAM, consulte Criação de políticas do IAM, no Manual do usuário do IAM do AWS Identity and Access Management. Para especificar a lista de endereços IP aos quais você deseja conceder acesso à chamada de API, utilize o operador de condição IpAddress e a chave de contexto de condição aws:SourceIP. Para obter informações sobre operadores de condição do IAM, consulte Elementos de política JSON do IAM: operadores de condições, no Guia do usuário do AWS Identity and Access Management. Para obter informações sobre chaves de contexto de condição do IAM, consulte Chaves globais de contexto de condição da AWS.

Por exemplo, a política a seguir permite acesso a CreateTrainingJob somente a partir de endereços IP nos intervalos 192.0.2.0 - 192.0.2.255 e 203.0.113.0 - 203.0.113.255:

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

Limitar o acesso a uma instância de caderno por endereço IP

Para permitir o acesso a uma instância de caderno somente a partir de endereços IP em uma lista especificada, anexe uma política do IAM que nega acesso a CreatePresignedNotebookInstanceUrl , a menos que a chamada venha de um endereço IP na lista para cada usuário, grupo ou perfil do AWS Identity and Access Management usado para acessar a instâncias de caderno. Para obter informações sobre a criação de políticas do IAM, consulte Criação de políticas do IAM, no Manual do usuário do IAM do AWS Identity and Access Management. Para especificar a lista de endereços IP aos quais você deseja conceder acesso à instâncias de caderno, utilize o operador de condição IpAddress e a chave de contexto de condição aws:SourceIP. Para obter informações sobre operadores de condição do IAM, consulte Elementos de política JSON do IAM: operadores de condições, no Guia do usuário do AWS Identity and Access Management. Para obter informações sobre chaves de contexto de condição do IAM, consulte Chaves globais de contexto de condição da AWS.

Por exemplo, a política a seguir permite acesso a uma instância de caderno somente a partir de endereços IP nos intervalos 192.0.2.0-192.0.2.255 e 203.0.113.0-203.0.113.255:

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

A política restringe o acesso à chamada para CreatePresignedNotebookInstanceUrl e à URL retornada pela chamada. A política também restringe o acesso à abertura de uma instância do notebook no console e é aplicada a cada solicitação HTTP e WebSocket quadro que tenta se conectar à instância do notebook.

nota

Usar esse método para filtrar por endereço IP é incompatível ao se conectar SageMaker por meio de um endpoint de interface VPC. . Para obter informações sobre como restringir o acesso a uma instância de caderno ao conectar-se por meio de um endpoint da interface VPC, consulte Conectar-se a uma instância de caderno por meio de um endpoint de interface VPC.

Controle o acesso aos SageMaker recursos usando tags

Especifique tags em uma política do IAM para controlar o acesso a grupos de SageMaker recursos. Use tags para implantar controle de acesso por atributo (ABAC). O uso de tags ajuda você a particionar o acesso aos recursos para grupos específicos de usuários. Você pode ter uma equipe com acesso a um grupo de recursos e uma equipe diferente com acesso a outro conjunto de recursos. Você pode fornecer condições ResourceTag nas políticas do IAM para fornecer acesso a cada grupo.

nota

As políticas baseadas em tag não funcionam para restringir as seguintes chamadas de API:

  • DeleteImageVersion

  • DescribeImageVersion

  • ListAlgorithms

  • ListCodeRepositories

  • ListCompilationJobs

  • ListEndpointConfigs

  • ListEndpoints

  • ListFlowDefinitions

  • ListHumanTaskUis

  • ListHyperparameterTuningJobs

  • ListLabelingJobs

  • ListLabelingJobsForWorkteam

  • ListModelPackages

  • ListModels

  • ListNotebookInstanceLifecycleConfigs

  • ListNotebookInstances

  • ListSubscribedWorkteams

  • ListTags

  • ListProcessingJobs

  • ListTrainingJobs

  • ListTrainingJobsForHyperParameterTuningJob

  • ListTransformJobs

  • ListWorkteams

  • Pesquisar

Um exemplo simples pode ajudar você a entender como usar tags para particionar recursos. Suponha que você tenha definido dois grupos diferentes do IAM, chamados DevTeam1 e DevTeam2, na sua conta da AWS. Você também criou 10 instâncias de caderno. Você está usando 5 das instâncias de caderno para um projeto. Você está usando os outros 5 para um segundo projeto. Você pode fornecer permissões ao DevTeam1 para fazer chamadas de API nas instâncias de caderno que você está usando para o primeiro projeto. Você pode fornecer permissões ao DevTeam2 para fazer chamadas de API em instâncias de caderno usadas para o segundo projeto.

O procedimento a seguir fornece um exemplo simples que ajuda você a entender o conceito de adicionar tags. Você pode usá-lo para implementar a solução descrita no parágrafo anterior.

Para controlar o acesso a chamadas de APIs (exemplo)
  1. Adicione uma tag com a chave Project e o valor A às instâncias de caderno usadas no primeiro projeto. Para obter informações sobre como adicionar tags aos SageMaker recursos, consulte AddTags.

  2. Adicione uma tag com a chave Project e o valor B às instâncias de caderno usadas no segundo projeto.

  3. Crie uma política do IAM com uma condição ResourceTag que negue acesso às instâncias de caderno usadas para o segundo projeto e anexe essa política à DevTeam1. Segue um exemplo de uma política que nega todas as chamadas da API em qualquer instância de caderno que tenha uma tag com uma chave de Project e um valor de B:

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

    Para obter informações sobre como criar políticas do IAM e anexá-las a identidades, consulte Controlar o acesso usando políticas no Guia do usuário do AWS Identity and Access Management.

  4. Crie uma política do IAM com uma condição ResourceTag que negue acesso às instâncias de caderno usadas para o primeiro projeto e anexe essa política à DevTeam2. Segue um exemplo de uma política que nega todas as chamadas da API em qualquer instância de caderno que tenha uma tag com uma chave de Project e um valor de A:

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

Forneça permissões para marcar SageMaker recursos após a criação

Há muitas SageMaker operações da Amazon que permitem que seus usuários especifiquem tags ao criar um recurso. Use tags de recurso para implantar controle de acesso por atributo (ABAC). O uso de tags ajuda você a particionar o acesso aos recursos para grupos específicos de usuários. Você pode ter uma equipe com acesso a um grupo de recursos e uma equipe diferente com acesso a outro conjunto de recursos. Você pode fornecer condições ResourceTag nas políticas do IAM para fornecer acesso a cada grupo.

Você deve dar aos seus usuários acesso às permissões que eles estão usando para criar recursos. Para usuários que precisam criar um trabalho de processamento, você deve dar a eles acesso sagemaker:CreateProcessingJob dentro da política. Se seus usuários estiverem marcando os recursos criados por eles, você também deve conceder permissões de marcação.

Importante

Você só pode dar aos seus usuários permissões para adicionar tags aos recursos criados por eles. Eles não podem adicionar tags aos recursos que já foram criados.

A seguir estão as operações em que você não pode fornecer recursos para adicionar tags:

  • DeleteImageVersion

  • DescribeImageVersion

  • ListAlgorithms

  • ListCodeRepositories

  • ListCompilationJobs

  • ListEndpointConfigs

  • ListEndpoints

  • ListFlowDefinitions

  • ListHumanTaskUis

  • ListHyperparameterTuningJobs

  • ListLabelingJobs

  • ListLabelingJobsForWorkteam

  • ListModelPackages

  • ListModels

  • ListNotebookInstanceLifecycleConfigs

  • ListNotebookInstances

  • ListSubscribedWorkteams

  • ListTags

  • ListProcessingJobs

  • ListTrainingJobs

  • ListTrainingJobsForHyperParameterTuningJob

  • ListTransformJobs

  • ListWorkteams

  • Pesquisar

Você pode controlar o acesso às operações que o usuário pode marcar ou às tags que ele pode usar. Você pode especificar permissões para os seguintes casos de uso:

  • Adicionar permissões para marcar os recursos criados usando qualquer operação e permissões para usar qualquer tag

  • Adicionar permissões para marcar os recursos criados usando operações e permissões específicas para usar qualquer tag

  • Adicionar permissões para marcar os recursos criados usando quaisquer operações e permissões para tags específicas

  • Adicionar permissões para marcar os recursos criados usando operações e permissões específicas para tags específicas

Permissions for any operation and any tag

Adicione a declaração a seguir a uma política do IAM para conceder aos usuários permissões para adicionar qualquer tag a qualquer operação.

{ "Statement": [ { "Effect": "Allow", "Action": [ "sagemaker:Create*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "sagemaker:AddTags" ], "Resource": "arn:aws:sagemaker:region:account:*/*", "Condition": { "Null": { "sagemaker:TaggingAction" : "false" } } } ] }
Permissions for a specific operation with specific tags

A declaração a seguir dá ao usuário permissão para adicionar a tag cc123 aos recursos criados usando a operação CreateModel. Você pode modificar a declaração para atender às suas próprias necessidades e adicioná-la à política do IAM anexada ao perfil dos seus usuários.

{ "Statement": [ { "Effect": "Allow", "Action": [ "sagemaker:CreateModel" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/cost-center": [ "cc123" ] }, "ForAnyValue:StringEquals": { "aws:TagKeys": [ "purpose" ] } } }, { "Effect": "Allow", "Action": [ "sagemaker:AddTags" ], "Resource": "arn:aws:sagemaker:region:account:*/*", "Condition": { "Null": { "sagemaker:TaggingAction" : "false" } } } ] }
Permissions for a specific operation and any tag

A declaração a seguir dá ao usuário permissão para adicionar qualquer tag aos recursos criados usando a operação CreateModel.

{ "Statement": [ { "Effect": "Allow", "Action": [ "sagemaker:CreateModel" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "sagemaker:AddTags" ], "Resource": "arn:aws:sagemaker:region:account:model/*", "Condition": { "String": { "sagemaker:TaggingAction" : [ "CreateModel" ] } } } ] }