View a markdown version of this page

Configurar permissões - SageMaker Inteligência Artificial da Amazon

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á.

Configurar permissões

Funções necessárias Add-on e suas dependências

Funções do IAM necessárias para SageMaker espaços em SageMaker HyperPod

Ao ativar SageMaker os recursos do Spaces (também conhecido como SageMaker IDE/Notebooks) em um cluster SageMaker HyperPod (EKS), várias funções do IAM devem ser criadas e atribuídas. Essas funções oferecem suporte a acesso seguro, roteamento, sessões remotas de IDE e provisionamento de armazenamento do EBS. A tabela a seguir resume as quatro funções e quando elas são necessárias.

Tabela de resumo de funções

Perfil do IAM Obrigatório? Finalidade Quem o usa? Personalização permitida pelo SageMaker console?

Add-on Função de execução do Spaces

Sempre necessário

Permite que o controlador Spaces gerencie Spaces, gere URLs pré-assinados e gerencie sessões de SSM

Add-on pod controlador (privilegiado)

✔ Sim

In-Cluster Função do roteador

Necessário para acesso ao WebUI

Permite que o pod do roteador execute operações KMS para assinatura JWT (autenticação WebUI)

In-cluster pod de roteador (privilegiado)

✔ Sim

Função de instância gerenciada do SSM

Necessário para acesso remoto ao IDE

Usado pelo sidecar do agente SSM para SSH-over-SSM sessões remotas de IDE

Pods do SSM Agent in Space IDE (não é um pod complementar)

✔ Sim

Função do IAM para o driver EBS CSI Add-on

Sempre necessário

Permite que o driver EBS CSI create/attach /modifique volumes para cargas de trabalho do Spaces

Controlador EBS CSI Add-on

Criado automaticamente

Função do IAM para DNS externo Add-on

Necessário para acesso ao WebUI

Ele garante que os endpoints do Space e os componentes do cluster possam receber nomes DNS automaticamente nas zonas hospedadas do Route 53 do cliente.

DNS externo Add-on

Criado automaticamente

1. Add-on Função de execução do Spaces (obrigatória)

A função de Add-on execução do Spaces é sempre necessária porque é usada pelo pod controlador do complemento SageMaker Spaces, um componente administrativo instalado por meio do complemento EKS. Essa função permite que o controlador gerencie Spaces, provisione recursos, interaja com o SSM e gere URLs pré-assinadas para acesso remoto ao IDE e ao WebUI. Ele também suporta o acesso KMS usado para assinatura de solicitações para autenticar as solicitações https do WebUI. Essa função pode ser criada automaticamente quando o complemento SageMaker Spaces é instalado por meio do SageMaker console. Para criação manual, AWS fornece a política AmazonSageMakerSpacesControllerPolicy gerenciada.

Política de confiança de referência

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "pods.eks.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:TagSession" ], "Condition": { "StringEquals": { "aws:SourceAccount": "{{accountId}}", "aws:SourceArn": "arn:aws:eks:{{region}}:{{accountId}}:cluster/{{eksClusterName}}" } } } ] }

2. In-Cluster Função de roteador (necessária para autenticação WebUI)

A função do In-Cluster roteador é usada pelo pod do roteador, um componente privilegiado que autentica as sessões do Spaces WebUI. O roteador usa uma chave KMS para criar e assinar tokens JWT que autorizam o acesso do usuário a espaços específicos. Essa função permite que o pod do roteador gere chaves de dados e as descriptografe. Semelhante à função de controlador, ela reforça a segurança usando restrições de escopo baseadas em tags e clusters. Essa função pode ser gerada automaticamente quando o complemento Spaces é instalado por meio do AWS SageMaker console, mas os clientes podem criá-la manualmente.

Política de confiança de referência

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "pods.eks.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:TagSession" ], "Condition": { "StringEquals": { "aws:SourceAccount": "{{accountId}}", "aws:SourceArn": "arn:aws:eks:{{region}}:{{accountId}}:cluster/{{eksClusterName}}" } } } ] }

Política de permissão de referência

{ "Version": "2012-10-17", "Statement": [ { "Sid": "KMSDescribeKey", "Effect": "Allow", "Action": [ "kms:DescribeKey" ], "Resource": "arn:aws:kms:{{region}}:{{accountId}}:key/{{kmsKeyId}}" }, { "Sid": "KMSKeyOperations", "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "arn:aws:kms:{{region}}:{{accountId}}:key/{{kmsKeyId}}", "Condition": { "StringEquals": { "kms:EncryptionContext:sagemaker:component": "amazon-sagemaker-spaces", "kms:EncryptionContext:sagemaker:eks-cluster-arn": "${aws:PrincipalTag/eks-cluster-arn}" } } } ] }

3. Função de instância gerenciada do SSM (necessária para acesso remoto ao IDE)

A função de instância gerenciada do SSM é passada ao registrar a instância gerenciada do SSM para habilitar o acesso remoto ao IDE. Essa função permite que o agente do SSM registre o pod como uma instância gerenciada do SSM e use os canais do SSM Session Manager para conectividade com o IDE remoto ()SSH-over-SSM. Ele pode ser criado automaticamente ao usar o AWS SageMaker console. Para implantações manuais, os clientes devem criar essa função e fornecê-la ao complemento Spaces. O pod do controlador em si não assume essa função; ele só a fornece durante a chamadassm:CreateActivation.

Política de confiança de referência

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "{{account}}" }, "ArnEquals": { "aws:SourceArn": "arn:aws:ssm:{{region}}:{{account}}:*" } } } ] }

Política de permissões de referência

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:DescribeAssociation" ], "Resource": [ "arn:aws:ssm:{{region}}:{{account}}:association/*", "arn:aws:ssm:{{region}}:{{account}}:document/*", "arn:aws:ec2:{{region}}:{{account}}:instance/*", "arn:aws:ssm:{{region}}:{{account}}:managed-instance/*" ] }, { "Effect": "Allow", "Action": [ "ssm:GetDocument", "ssm:DescribeDocument" ], "Resource": "arn:aws:ssm:{{region}}:{{account}}:document/*" }, { "Effect": "Allow", "Action": [ "ssm:GetParameter", "ssm:GetParameters" ], "Resource": "arn:aws:ssm:{{region}}:{{account}}:parameter/*" }, { "Effect": "Allow", "Action": [ "ssm:ListInstanceAssociations" ], "Resource": [ "arn:aws:ec2:{{region}}:{{account}}:instance/*", "arn:aws:ssm:{{region}}:{{account}}:managed-instance/*" ] }, { "Effect": "Allow", "Action": [ "ssm:PutComplianceItems" ], "Resource": [ "arn:aws:ec2:{{region}}:{{account}}:instance/*", "arn:aws:ssm:{{region}}:{{account}}:managed-instance/*" ] }, { "Effect": "Allow", "Action": [ "ssm:UpdateAssociationStatus" ], "Resource": [ "arn:aws:ssm:{{region}}:{{account}}:document/*", "arn:aws:ec2:{{region}}:{{account}}:instance/*", "arn:aws:ssm:{{region}}:{{account}}:managed-instance/*" ] }, { "Effect": "Allow", "Action": [ "ssm:UpdateInstanceAssociationStatus" ], "Resource": [ "arn:aws:ssm:{{region}}:{{account}}:association/*", "arn:aws:ec2:{{region}}:{{account}}:instance/*", "arn:aws:ssm:{{region}}:{{account}}:managed-instance/*" ] }, { "Effect": "Allow", "Action": [ "ssm:UpdateInstanceInformation" ], "Resource": [ "arn:aws:ec2:{{region}}:{{account}}:instance/*", "arn:aws:ssm:{{region}}:{{account}}:managed-instance/*" ] }, { "Effect": "Allow", "Action": [ "ssm:GetDeployablePatchSnapshotForInstance", "ssm:GetManifest", "ssm:ListAssociations", "ssm:PutInventory", "ssm:PutConfigurePackageResult" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssmmessages:CreateControlChannel", "ssmmessages:CreateDataChannel", "ssmmessages:OpenControlChannel", "ssmmessages:OpenDataChannel" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2messages:AcknowledgeMessage", "ec2messages:DeleteMessage", "ec2messages:FailMessage", "ec2messages:GetEndpoint" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2messages:GetMessages", "ec2messages:SendReply" ], "Resource": "*", "Condition": { "ArnLike": { "ssm:SourceInstanceARN": "arn:aws:ssm:{{region}}:{{account}}:managed-instance/*" } } } ] }

4. Função do IAM para o driver EBS CSI Add-on

A função do IAM para o driver CSI do EBS é necessária porque o driver CSI do EBS provisiona volumes persistentes para cargas de trabalho do Spaces. Embora o AWS-managed AmazonEBSCSIDriverPolicyforneça permissões básicas, os SageMaker HyperPod clusters exigem recursos adicionais, como criar restaurações rápidas de instantâneos, marcar volumes de propriedade do cluster e volumes para nós. attaching/detaching HyperPod-managed Essas permissões também incluem SageMaker-specific APIs comosagemaker:AttachClusterNodeVolume. Se o driver EBS CSI não estiver instalado, essa função agora será criada automaticamente pelo SageMaker console durante a instalação do complemento Spaces, sem exigir nenhuma ação do cliente.

5. Função do IAM para DNS externo Add-on

O complemento DNS externo gerencia registros DNS para recursos de Serviços e Entrada no cluster. HyperPod Ele garante que os endpoints do Space e os componentes do cluster possam receber nomes DNS automaticamente nas zonas hospedadas do Route 53 do cliente. Atualmente, os clientes geralmente instalam o DNS externo manualmente por meio de uma opção de 1 clique no console EKS. Como parte da melhoria da experiência do SageMaker Spaces, essa função agora será criada automaticamente pelo SageMaker console durante a instalação do complemento Spaces, sem exigir nenhuma ação do cliente.

Configuração de permissão para AWS Kit de ferramentas para acessar espaços SageMaker

Para permitir que o painel lateral do explorador de recursos do AWS VS Code Toolkit descubra e se conecte ao SageMaker Spaces, as seguintes permissões do IAM são necessárias. Essas permissões permitem que o Toolkit liste SageMaker HyperPod clusters disponíveis, recupere detalhes do cluster e obtenha um token de conexão para o cluster Amazon EKS associado.

Política de IAM necessária

{ "Version": "2012-10-17", "Statement": [ { "Sid": "SageMakerListClusters", "Effect": "Allow", "Action": "sagemaker:ListClusters", "Resource": "*" }, { "Sid": "SageMakerDescribeCluster", "Effect": "Allow", "Action": "sagemaker:DescribeCluster", "Resource": "arn:aws:sagemaker:{{region}}:{{account}}:cluster/cluster-name" }, { "Sid": "EksDescribeCluster", "Effect": "Allow", "Action": "eks:DescribeCluster", "Resource": "arn:aws:eks:{{region}}:{{account}}:cluster/cluster-name" }, { "Sid": "EksGetToken", "Effect": "Allow", "Action": "eks:GetToken", "Resource": "*" } ] }

Recomendações de escopo

  • Substitua cluster-name pelo (s) SageMaker HyperPod cluster (s) específico (s) que seus usuários precisam acessar.

  • A GetToken ação eks: atualmente não suporta restrições em nível de recurso e deve usar Resource: “*”. Essa é uma limitação AWS do serviço. A autenticação do lado do cliente é realizada por meio de entradas de acesso do EKS.