View a markdown version of this page

Configurar permissões - SageMaker IA 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 conhecidos 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 de IDE remotas 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 da função

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

Add-on Função de execução de espaços

Sempre necessário

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

Add-on pod controlador (privilegiado)

✔ Sim

In-Cluster Função do roteador

Necessário para acesso à 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 agente auxiliar SSM para sessões SSH-over-SSM remotas de IDE

Agente SSM em pods IDE do Space (não um pod adicional)

✔ 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 à WebUI

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

DNS externo Add-on

Criado automaticamente

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

A função de Add-on execução do Spaces é sempre necessária porque é usada pelo pod controlador adicional SageMaker Spaces, um componente administrativo instalado por meio do complemento EKS. Essa função permite que o controlador gerencie espaços, provisione recursos, interaja com o SSM e gere URLs pré-assinadas para acesso remoto ao IDE e à WebUI. Ele também oferece suporte ao 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 referência de confiança

{ "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 de In-Cluster roteador é usada pelo pod do roteador, um componente privilegiado que autentica as sessões WebUI do Spaces. 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 impõe 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 referência de confiança

{ "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 SSM (necessária para acesso remoto ao IDE)

A função de instância gerenciada SSM é passada ao registrar a instância gerenciada SSM para habilitar o acesso remoto ao IDE. Essa função permite que o agente SSM registre o pod como uma instância gerenciada pelo SSM e use os canais do SSM Session Manager para conectividade IDE () SSH-over-SSM remota. 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 referência de confiança

{ "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 IAM para o driver EBS CSI é necessária porque o driver EBS CSI provisiona volumes persistentes para cargas de trabalho do Spaces. Embora o AWS-managed AmazonEBSCSIDriverPolicy forneç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 de DNS para serviços e recursos de entrada no cluster. HyperPod Ele garante que os endpoints do Space e os componentes do cluster possam receber automaticamente nomes de DNS nas zonas hospedadas pelo 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.

Pré-requisitos para o Direct SSH

O SSH direto exige os seguintes pré-requisitos de infraestrutura. Se o acesso ao navegador da Web já estiver habilitado em seu cluster, esses pré-requisitos já estão em vigor. Para obter mais informações sobre o acesso ao navegador da Web, consulteAcesso pelo navegador da web.

  • ExternalDNS — implantado por meio de complementos do EKS, com uma função do IAM que tem permissões do Route 53. Configure o ExternalDNS com --policy=sync (não o padrãoupsert-only) para que o ExternalDNS remova os registros DNS ao excluir um espaço de trabalho.

  • Zona hospedada privada do Amazon Route 53 — um domínio ou subdomínio que você possui, registrado no Route 53 e associado ao cluster VPC.

  • Conectividade VPC a partir de máquinas clientes — VPN ou AWS Direct Connect de máquinas clientes ao cluster VPC. Como o Direct SSH expõe a porta no endereço IP privado do pod dentro da VPC, você pode se conectar somente se sua máquina cliente tiver conectividade de rede com essa VPC, por meio da mesma VPC, emparelhamento de VPC, VPN ou Direct Connect.

  • AWS Controlador de balanceador de carga — necessário se você também usa o acesso ao navegador da web (entrada ALB). Para obter notas de HyperPod-specific instalação, consulteAWS Controlador de balanceador de carga: requisito de HyperPod vPCid.

Para obter instruções detalhadas de configuração e verificação, consulte(Opcional) Configurando pré-requisitos.

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 o nome do cluster 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 de 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 EKS.