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 para o complemento 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? |
|---|---|---|---|---|
|
Função de execução do complemento Spaces |
Sempre necessário |
Permite que o controlador Spaces gerencie Spaces, gere sessões pré-assinadas e gerencie URLs sessões de SSM |
Pod controlador adicional (privilegiado) |
✔ Sim |
|
Função do roteador no cluster |
Necessário para acesso ao WebUI |
Permite que o pod do roteador execute operações KMS para assinatura JWT (autenticação WebUI) |
Pod de roteador no cluster (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 complemento do driver EBS CSI |
Sempre necessário |
Permite que o driver EBS CSI use create/attach/modify volumes para cargas de trabalho do Spaces |
Complemento do driver EBS CSI |
Criado automaticamente |
|
Função do IAM para complemento de DNS externo |
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. |
Complemento de DNS externo |
Criado automaticamente |
1. Função de execução do complemento Spaces (obrigatória)
A função de execução do complemento 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 espaços, provisione recursos, interaja com o SSM e gere pré-assinados URLs 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. Função de roteador no cluster (necessária para autenticação WebUI)
A função In-Cluster Router é 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 do IDE remoto (SSH sobre 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 complemento do driver EBS CSI
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 a Amazon EBSCSIDriver Policy AWS gerenciada forneça permissões básicas, os SageMaker HyperPod clusters exigem recursos adicionais, como criar restaurações rápidas de instantâneos, marcar volumes pertencentes ao cluster e volumes para nós gerenciados. attaching/detaching HyperPod Essas permissões também incluem permissões SageMaker específicas 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 complemento de DNS externo
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 o 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.