Configurar perfis de runtime do IAM para acesso ao cluster do Amazon EMR no Studio - 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 perfis de runtime do IAM para acesso ao cluster do Amazon EMR no Studio

Ao se conectar a um cluster do Amazon EMR a partir do seu caderno do Studio ou Studio Classic, você pode visualizar uma lista de perfis do IAM, conhecidos como funções de runtime, e selecionar uma delas rapidamente. Posteriormente, todos os seus trabalhos do Apache Spark, Apache Hive ou Presto criados no seu caderno do Studio acessarão somente os dados e recursos permitidos pelas políticas anexadas à função de runtime. Além disso, quando os dados são acessados a partir de data lakes gerenciados com AWS Lake Formation, você pode impor o acesso em nível de tabela e coluna usando políticas anexadas à função de tempo de execução.

Com esse recurso, você e seus colegas de equipe podem se conectar ao mesmo cluster, cada um usando uma função de runtime com permissões correspondentes ao seu nível individual de acesso aos dados. Suas sessões também são isoladas umas das outras no cluster compartilhado.

Para experimentar esse recurso usando o Studio Classic, consulte Aplicar controles refinados de acesso a dados com e o AWS Lake Formation Amazon EMR do Amazon Studio Classic. SageMaker Esta postagem do blog ajuda você a configurar um ambiente de demonstração no qual você pode tentar usar funções de runtime pré-configuradas para se conectar aos clusters do Amazon EMR.

Pré-requisitos

Antes começar, certifique-se de que os seguintes pré-requisitos sejam atendidos:

Cenários de conexão entre contas

A autenticação por função de runtime oferece apoio a vários cenários de conexão entre contas quando seus dados residem fora da sua conta do Studio. A imagem a seguir mostra três maneiras diferentes de atribuir seu cluster, dados e até mesmo a função de runtime do Amazon EMR entre seu Studio e suas contas de dados:

Cenários entre contas compatíveis com autenticação de perfil do IAM em runtime.

Na opção 1, seu cluster do Amazon EMR e a função de runtime do Amazon EMR estão em uma conta de dados separada da sua conta do Studio. Você define uma política de permissão de função de acesso do Amazon EMR (também referida como Assumable role) separada que concede permissão ao seu perfil de execução do Studio ou Studio Classic para assumir a função de acesso do Amazon EMR. A função de acesso do Amazon EMR, então, chama a API GetClusterSessionCredentials do Amazon EMR em nome do seu perfil de execução do Studio ou Studio Classic, dando acesso ao cluster.

Na opção 2, seu cluster do Amazon EMR e a função de runtime do Amazon EMR estão na sua conta do Studio. Sua função de execução do Studio tem permissão para usar a API do Amazon EMR GetClusterSessionCredentials para obter acesso ao seu cluster. Para acessar o bucket do Amazon S3, conceda à função de runtime do Amazon EMR permissões de acesso ao bucket do Amazon S3 entre contas: você concede essas permissões dentro da sua política de bucket do Amazon S3.

Na opção 3, seus clusters do Amazon EMR estão na sua conta do Studio, e o perfil de runtime do Amazon EMR está na sua conta de dados. Seu perfil de execução do Studio ou Studio Classic tem permissão para usar a API GetClusterSessionCredentials do Amazon EMR para obter acesso ao seu cluster. Adicione a função de runtime do Amazon EMR ao JSON de configuração da função de execução. Em seguida, você pode selecionar a função na interface do usuário ao escolher seu cluster. Para obter detalhes sobre como configurar seu arquivo JSON de configuração da função de execução, consulte Pré-carregar seus perfis de execução no Studio ou Studio Classic.

Configurar o Studio para usar funções do IAM em runtime

Para estabelecer a autenticação de função de runtime para seus clusters do Amazon EMR, configure as políticas do IAM, a rede e os aprimoramentos de usabilidade necessários. Sua configuração depende de você lidar com regras entre contas, se seus clusters do Amazon EMR, função de runtime do Amazon EMR ou ambos residirem fora da sua conta do Studio. A discussão a seguir orienta você sobre as políticas de instalação, como configurar a rede para permitir o tráfego entre contas e o arquivo de configuração local a ser configurado para automatizar sua conexão com o Amazon EMR.

Configure a autenticação da função de runtime quando o cluster do Amazon EMR e o Studio estiverem na mesma conta

Se seu cluster do Amazon EMR residir em sua conta do Studio, conclua as seguintes etapas para adicionar as permissões necessárias à sua política de execução do Studio:

  1. Adicione a política do IAM necessária para se conectar aos clusters do Amazon EMR. Para obter detalhes, consulte Configurar a listagem de clusters do Amazon EMR.

  2. Conceda permissão para chamar a API GetClusterSessionCredentials do Amazon EMR ao passar uma ou mais funções de runtime do Amazon EMR permitidas e especificadas na política.

  3. (Opcional) Conceda permissão para transmitir funções do IAM que sigam qualquer convenção de nomenclatura definida pelo usuário.

  4. (Opcional) Conceda permissão para acessar clusters do Amazon EMR que são marcados com cadeias de caracteres específicas definidas pelo usuário.

  5. Pré-carregue seus perfis do IAM para que você possa selecionar a função a ser usada ao se conectar ao seu cluster do Amazon EMR. Para saber detalhes sobre como pré-carregar suas funções do IAM, consulte Pré-carregar seus perfis de execução no Studio ou Studio Classic.

O exemplo de política a seguir permite que funções de runtime do Amazon EMR pertencentes aos grupos de modelagem e treinamento chamem GetClusterSessionCredentials. Além disso, o segurado pode acessar clusters do Amazon EMR marcados com as sequências de caracteres modeling ou training.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "elasticmapreduce:GetClusterSessionCredentials", "Resource": "*", "Condition": { "StringLike": { "elasticmapreduce:ExecutionRoleArn": [ "arn:aws:iam::123456780910:role/emr-execution-role-ml-modeling*", "arn:aws:iam::123456780910:role/emr-execution-role-ml-training*" ], "elasticmapreduce:ResourceTag/group": [ "*modeling*", "*training*" ] } } } ] }

Configure a autenticação da função de runtime quando o cluster do Studio estiver em contas diferentes

Se seu cluster do Amazon EMR não estiver em sua conta do Studio, permita que sua função de execução de SageMaker IA assuma a função de acesso entre contas do Amazon EMR para que você possa se conectar ao cluster. Conclua as seguintes etapas para configurar sua configuração entre contas:

  1. Crie sua política de permissão de função de execução de SageMaker IA para que a função de execução possa assumir a função de acesso ao Amazon EMR. Veja abaixo um exemplo de política:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAssumeCrossAccountEMRAccessRole", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::emr_account_id:role/emr-access-role-name" } ] }
  2. Crie a política de confiança para especificar quais contas do Studio IDs são confiáveis para assumir a função de acesso ao Amazon EMR. Veja abaixo um exemplo de política:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCrossAccountSageMakerExecutionRoleToAssumeThisRole", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::studio_account_id:role/studio_execution_role" }, "Action": "sts:AssumeRole" } }
  3. Crie a política de permissão da função de acesso do Amazon EMR, que concede à função de runtime do Amazon EMR as permissões necessárias para realizar as tarefas pretendidas no cluster. Configure a função de acesso do Amazon EMR para chamar a API GetClusterSessionCredentials com as funções de runtime do Amazon EMR especificadas na política de permissão da função de acesso. Veja abaixo um exemplo de política:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCallingEmrGetClusterSessionCredentialsAPI", "Effect": "Allow", "Action": "elasticmapreduce:GetClusterSessionCredentials", "Resource": "", "Condition": { "StringLike": { "elasticmapreduce:ExecutionRoleArn": [ "arn:aws:iam::emr_account_id:role/emr-execution-role-name" ] } } } ] }
  4. Configure a rede entre contas para que o tráfego possa ir e voltar entre suas contas. Para obter instruções, consulte Configurar o Configurar o acesso à rede para o cluster do Amazon EMR. As etapas nessa seção ajudam você a concluir as seguintes tarefas:

    1. VPC-Peer sua conta do Studio e sua conta do Amazon EMR para estabelecer uma conexão.

    2. Adicione rotas manualmente às tabelas de rotas da sub-rede privada em ambas as contas. Isso permite a criação e a conexão de clusters do Amazon EMR da conta do Studio à sub-rede privada da conta remota.

    3. Configure o grupo de segurança anexado ao seu domínio do Studio para permitir o tráfego de saída e o grupo de segurança do nó primário do Amazon EMR para permitir o tráfego TCP de entrada do grupo de segurança da instância do Studio.

  5. Pré-carregar suas funções de runtime do IAM para que você possa selecionar a função a ser usada ao se conectar ao seu cluster do Amazon EMR. Para saber detalhes sobre como pré-carregar suas funções do IAM, consulte Pré-carregar seus perfis de execução no Studio ou Studio Classic.

Configurar o acesso ao Lake Formation

Ao acessar dados de data lakes gerenciados pelo AWS Lake Formation, você pode impor o acesso em nível de tabela e coluna usando políticas anexadas à sua função de tempo de execução. Para configurar a permissão para acesso ao Lake Formation, consulte Integrar o Amazon EMR com AWS Lake Formation.

Pré-carregar seus perfis de execução no Studio ou Studio Classic

Você pode pré-carregar suas funções de runtime do IAM para poder selecionar a função a ser usada ao se conectar ao seu cluster do Amazon EMR. Os usuários do JupyterLab in Studio podem usar o console de SageMaker IA ou o script fornecido.

Preload runtime roles in JupyterLab using the SageMaker AI console

Para associar suas funções de tempo de execução ao seu perfil de usuário ou domínio usando o console de SageMaker IA:

  1. Navegue até o console de SageMaker IA em https://console.aws.amazon.com/sagemaker/.

  2. No painel de navegação esquerdo, escolha domínio e, em seguida, selecione o domínio usando a função de execução de SageMaker IA cujas permissões você atualizou.

    • Para adicionar seu tempo de execução (e funções de acesso para casos de uso entre contas) ao seu domínio: na guia Configurações do aplicativo da página de detalhes do domínio, navegue até a JupyterLabseção.

    • Para adicionar seu tempo de execução (e funções de acesso para casos de uso entre contas) ao seu perfil de usuário: na página de detalhes do domínio, escolha a guia Perfis de usuário, selecione o perfil de usuário usando a função de execução de SageMaker IA cujas permissões você atualizou. Na guia Configurações do aplicativo, navegue até a JupyterLabseção.

  3. Escolha Editar e adicione a sua função ARNs de acesso (função presumível) e as funções de execução de tempo de execução do EMR Serverless.

  4. Selecione Enviar.

Na próxima vez em que você se conectar a um servidor do Amazon EMR, as funções de runtime devem aparecer em um menu suspenso para seleção.

Preload runtime roles in JupyterLab using a Python script

Em um JupyterLab aplicativo iniciado em um espaço usando a função de execução de SageMaker IA cujas permissões você atualizou, execute o comando a seguir em um terminal. Substitua domainID, user-profile-name, emr-accountID e EMRServiceRole por seus valores apropriados. Esse trecho de código atualiza as configurações do perfil do usuário (client.update_user_profile) em um domínio de SageMaker IA em um caso de uso entre contas. Especificamente, ele define os perfis de serviço do Amazon EMR. Também permite que o JupyterLab aplicativo assuma uma função específica do IAM (AssumableRoleouAccessRole) para executar o Amazon EMR na conta do Amazon EMR.

Como alternativa, use client.update_domain para atualizar as configurações do domínio se seu espaço usar um perfil de execução definido no nível do domínio.

import botocore.session import json sess = botocore.session.get_session() client = sess.create_client('sagemaker') client.update_user_profile( DomainId="domainID", UserProfileName="user-profile-name", UserSettings={ 'JupyterLabAppSettings': { 'EmrSettings': { 'AssumableRoleArns': ["arn:aws:iam::emr-accountID:role/AssumableRole"], 'ExecutionRoleArns': ["arn:aws:iam::emr-accountID:role/EMRServiceRole", "arn:aws:iam::emr-accountID:role/AnotherServiceRole"] } } }) resp = client.describe_user_profile(DomainId="domainID", UserProfileName=user-profile-name") resp['CreationTime'] = str(resp['CreationTime']) resp['LastModifiedTime'] = str(resp['LastModifiedTime']) print(json.dumps(resp, indent=2))
Preload runtime roles in Studio Classic

Forneça o ARN do AccessRole (AssumableRole) para sua função de execução de SageMaker IA. O ARN é carregado pelo servidor do Jupyter na inicialização. O perfil de execução do Studio aceita essa função entre contas para descobrir e se conectar aos clusters do Amazon EMR na conta confiável.

É possível especificar essas informações usando scripts de configuração do ciclo de vida (LCC). Você pode anexar a LCC ao seu domínio ou a um perfil de usuário específico. O script de LCC que você usa deve ser uma JupyterServer configuração. Para obter mais informações sobre como criar um script de LCC, consulte Usar configurações de ciclo de vida com o Studio Classic.

A seguir há um exemplo de script de LCC. Para modificar o script, substitua AssumableRole e emr-account por seus respectivos valores. O número de contas cruzadas é limitado a cinco.

O trecho a seguir é um exemplo de script Bash de LCC que você pode aplicar se a aplicação do Studio Classic e o cluster estiverem na mesma conta:

#!/bin/bash set -eux FILE_DIRECTORY="/home/sagemaker-user/.sagemaker-analytics-configuration-DO_NOT_DELETE" FILE_NAME="emr-configurations-DO_NOT_DELETE.json" FILE="$FILE_DIRECTORY/$FILE_NAME" mkdir -p $FILE_DIRECTORY cat << 'EOF' > "$FILE" { "emr-execution-role-arns": { "123456789012": [ "arn:aws:iam::123456789012:role/emr-execution-role-1", "arn:aws:iam::123456789012:role/emr-execution-role-2" ] } } EOF

Se a aplicação e os clusters do Studio Classic estiverem em contas diferentes, especifique as funções de acesso do Amazon EMR que podem usar o cluster. No exemplo de política a seguir, 123456789012 é o ID da conta de cluster do Amazon EMR, e 212121212121 e 434343434343 são as funções de acesso permitidas do Amazon EMR. ARNs

#!/bin/bash set -eux FILE_DIRECTORY="/home/sagemaker-user/.sagemaker-analytics-configuration-DO_NOT_DELETE" FILE_NAME="emr-configurations-DO_NOT_DELETE.json" FILE="$FILE_DIRECTORY/$FILE_NAME" mkdir -p $FILE_DIRECTORY cat << 'EOF' > "$FILE" { "emr-execution-role-arns": { "123456789012": [ "arn:aws:iam::212121212121:role/emr-execution-role-1", "arn:aws:iam::434343434343:role/emr-execution-role-2" ] } } EOF # add your cross-account EMR access role FILE_DIRECTORY="/home/sagemaker-user/.cross-account-configuration-DO_NOT_DELETE" FILE_NAME="emr-discovery-iam-role-arns-DO_NOT_DELETE.json" FILE="$FILE_DIRECTORY/$FILE_NAME" mkdir -p $FILE_DIRECTORY cat << 'EOF' > "$FILE" { "123456789012": "arn:aws:iam::123456789012:role/cross-account-emr-access-role" } EOF