Criar uma função de serviço do EMR Studio - Amazon EMR

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

Criar uma função de serviço do EMR Studio

Sobre a função de serviço do EMR Studio

Cada EMR estúdio usa uma IAM função com permissões que permitem que o estúdio interaja com outros AWS serviços. Essa função de serviço deve incluir permissões que permitam ao EMR Studio estabelecer um canal de rede seguro entre espaços de trabalho e clusters, armazenar arquivos do notebook e acessá-los AWS Secrets Manager enquanto vincula um espaço de trabalho a um repositório Git. Amazon S3 Control

Use o perfil de serviço do Studio (em vez das políticas de sessão) para definir todas as permissões de acesso do Amazon S3 para armazenar arquivos de cadernos e para definir as permissões de acesso do AWS Secrets Manager .

Como criar uma função de serviço para o EMR Studio na Amazon EC2 ou na Amazon EKS

  1. Siga as instruções em Criação de uma função para delegar permissões a um AWS serviço para criar a função de serviço com a seguinte política de confiança.

    Importante

    A política de confiança a seguir inclui as chaves de condição aws:SourceAccountglobais aws:SourceArne as chaves de condição para limitar as permissões que você concede ao EMR Studio a recursos específicos em sua conta. Fazer isso pode proteger você contra o problema de “confused deputy”.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "elasticmapreduce.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "<account-id>" }, "ArnLike": { "aws:SourceArn": "arn:aws:elasticmapreduce:<region>:<account-id>:*" } } } ] }
  2. Remova as permissões de perfil padrão. Em seguida, inclua as permissões do exemplo de política de IAM permissões a seguir. Como alternativa, você pode criar uma política personalizada que use as EMRPermissões da função de serviço do Studio.

    Importante
    • Para que o controle de acesso EC2 baseado em tags da Amazon funcione com o EMR Studio, você deve definir o acesso ao ModifyNetworkInterfaceAttribute API conforme mostrado na política a seguir.

    • Para que o EMR Studio trabalhe com a função de serviço, você não deve alterar as seguintes declarações: AllowAddingEMRTagsDuringDefaultSecurityGroupCreation AllowAddingTagsDuringEC2ENICreation e.

    • Para usar a política de exemplo, você deve etiquetar os recursos apresentados a seguir com a chave "for-use-with-amazon-emr-managed-policies" e o valor "true".

      • Sua Amazon Virtual Private Cloud (VPC) para EMR Studio.

      • Cada sub-rede que deseja usar com o Studio.

      • Qualquer grupo de segurança personalizado do EMR Studio. Você deve marcar todos os grupos de segurança criados durante o período de pré-visualização do EMR Studio se quiser continuar a usá-los.

      • Segredos mantidos nos AWS Secrets Manager quais os usuários do Studio usam para vincular repositórios Git a um espaço de trabalho.

      Você pode aplicar etiquetas aos recursos usando a guia Etiquetas na tela de recursos relevantes no AWS Management Console.

    Quando aplicável, altere a * política a seguir para especificar o Amazon Resource Name (ARN) dos recursos que a declaração abrange para seu caso de uso. "Resource":"*"

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowEMRReadOnlyActions", "Effect": "Allow", "Action": [ "elasticmapreduce:ListInstances", "elasticmapreduce:DescribeCluster", "elasticmapreduce:ListSteps" ], "Resource": "*" }, { "Sid": "AllowEC2ENIActionsWithEMRTags", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface" ], "Resource": [ "arn:aws:ec2:*:*:network-interface/*" ], "Condition": { "StringEquals": { "aws:ResourceTag/for-use-with-amazon-emr-managed-policies": "true" } } }, { "Sid": "AllowEC2ENIAttributeAction", "Effect": "Allow", "Action": [ "ec2:ModifyNetworkInterfaceAttribute" ], "Resource": [ "arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:network-interface/*", "arn:aws:ec2:*:*:security-group/*" ] }, { "Sid": "AllowEC2SecurityGroupActionsWithEMRTags", "Effect": "Allow", "Action": [ "ec2:AuthorizeSecurityGroupEgress", "ec2:AuthorizeSecurityGroupIngress", "ec2:RevokeSecurityGroupEgress", "ec2:RevokeSecurityGroupIngress", "ec2:DeleteNetworkInterfacePermission" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/for-use-with-amazon-emr-managed-policies": "true" } } }, { "Sid": "AllowDefaultEC2SecurityGroupsCreationWithEMRTags", "Effect": "Allow", "Action": [ "ec2:CreateSecurityGroup" ], "Resource": [ "arn:aws:ec2:*:*:security-group/*" ], "Condition": { "StringEquals": { "aws:RequestTag/for-use-with-amazon-emr-managed-policies": "true" } } }, { "Sid": "AllowDefaultEC2SecurityGroupsCreationInVPCWithEMRTags", "Effect": "Allow", "Action": [ "ec2:CreateSecurityGroup" ], "Resource": [ "arn:aws:ec2:*:*:vpc/*" ], "Condition": { "StringEquals": { "aws:ResourceTag/for-use-with-amazon-emr-managed-policies": "true" } } }, { "Sid": "AllowAddingEMRTagsDuringDefaultSecurityGroupCreation", "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:*:*:security-group/*", "Condition": { "StringEquals": { "aws:RequestTag/for-use-with-amazon-emr-managed-policies": "true", "ec2:CreateAction": "CreateSecurityGroup" } } }, { "Sid": "AllowEC2ENICreationWithEMRTags", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface" ], "Resource": [ "arn:aws:ec2:*:*:network-interface/*" ], "Condition": { "StringEquals": { "aws:RequestTag/for-use-with-amazon-emr-managed-policies": "true" } } }, { "Sid": "AllowEC2ENICreationInSubnetAndSecurityGroupWithEMRTags", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface" ], "Resource": [ "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:security-group/*" ], "Condition": { "StringEquals": { "aws:ResourceTag/for-use-with-amazon-emr-managed-policies": "true" } } }, { "Sid": "AllowAddingTagsDuringEC2ENICreation", "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "StringEquals": { "ec2:CreateAction": "CreateNetworkInterface" } } }, { "Sid": "AllowEC2ReadOnlyActions", "Effect": "Allow", "Action": [ "ec2:DescribeSecurityGroups", "ec2:DescribeNetworkInterfaces", "ec2:DescribeTags", "ec2:DescribeInstances", "ec2:DescribeSubnets", "ec2:DescribeVpcs" ], "Resource": "*" }, { "Sid": "AllowSecretsManagerReadOnlyActionsWithEMRTags", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "arn:aws:secretsmanager:*:*:secret:*", "Condition": { "StringEquals": { "aws:ResourceTag/for-use-with-amazon-emr-managed-policies": "true" } } }, { "Sid": "AllowWorkspaceCollaboration", "Effect": "Allow", "Action": [ "iam:GetUser", "iam:GetRole", "iam:ListUsers", "iam:ListRoles", "sso:GetManagedApplicationInstance", "sso-directory:SearchUsers" ], "Resource": "*" } ] }
  3. Dê à sua função de serviço acesso de leitura e gravação à sua localização do Amazon S3 para EMR o Studio. Use o conjunto mínimo de permissões apresentado a seguir. Para obter mais informações, consulte o exemplo Amazon S3: permite acesso de leitura e gravação a objetos em um bucket do S3 de forma programática e no console.

    "s3:PutObject", "s3:GetObject", "s3:GetEncryptionConfiguration", "s3:ListBucket", "s3:DeleteObject"

    Se você criptografar seu bucket do Amazon S3, inclua as permissões a seguir para o AWS Key Management Service.

    "kms:Decrypt", "kms:GenerateDataKey", "kms:ReEncryptFrom", "kms:ReEncryptTo", "kms:DescribeKey"
  4. Se você quiser controlar o acesso aos segredos do Git no nível do usuário, adicione permissões baseadas em tags secretsmanager:GetSecretValue na política de função de usuário do EMR Studio e remova as permissões da secretsmanager:GetSecretValue política de função de serviço do EMR Studio. Para obter mais informações sobre como configurar as permissões refinadas de usuário, consulte Crie políticas de permissões para usuários do EMR Studio.

Função de serviço mínima para EMR Serverless

Se você quiser executar cargas de trabalho interativas com o EMR Serverless por meio de notebooks do EMR Studio, use a mesma política de confiança usada para configurar o EMR Studio na seção anterior,. Como criar uma função de serviço para o EMR Studio na Amazon EC2 ou na Amazon EKS

Para sua IAM política, a política mínima viável tem as seguintes permissões. Atualize bucket-name com o nome do bucket que você planeja usar ao configurar o EMR Studio e o Workspace. EMRO Studio usa o bucket para fazer backup dos espaços de trabalho e dos arquivos do notebook em seu Studio.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ObjectActions", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject" ], "Resource": ["arn:aws:s3:::bucket-name/*"] }, { "Sid": "BucketActions", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetEncryptionConfiguration" ], "Resource": ["arn:aws:s3:::bucket-name"] } ] }

Se usar um bucket criptografado do Amazon S3, inclua as seguintes permissões na sua política:

"kms:Decrypt", "kms:GenerateDataKey", "kms:ReEncryptFrom", "kms:ReEncryptTo", "kms:DescribeKey"

EMRPermissões da função de serviço do Studio

A tabela a seguir lista as operações que o EMR Studio executa usando a função de serviço, junto com as IAM ações necessárias para cada operação.

Operation Ações
Estabeleça um canal de rede seguro entre um espaço de trabalho e um EMR cluster e execute as ações de limpeza necessárias.
"ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "ec2:DescribeNetworkInterfaces", "ec2:ModifyNetworkInterfaceAttribute", "ec2:AuthorizeSecurityGroupEgress", "ec2:AuthorizeSecurityGroupIngress", "ec2:CreateSecurityGroup", "ec2:DescribeSecurityGroups", "ec2:RevokeSecurityGroupEgress", "ec2:DescribeTags", "ec2:DescribeInstances", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "elasticmapreduce:ListInstances", "elasticmapreduce:DescribeCluster", "elasticmapreduce:ListSteps"
Use as credenciais do Git armazenadas para AWS Secrets Manager vincular os repositórios do Git a um espaço de trabalho.
"secretsmanager:GetSecretValue"
Aplique AWS tags à interface de rede e aos grupos de segurança padrão que o EMR Studio cria ao configurar o canal de rede seguro. Para obter mais informações, consulte Etiquetar recursos da AWS.
"ec2:CreateTags"
Acesso ou upload de arquivos e metadados de cadernos para o Amazon S3.
"s3:PutObject", "s3:GetObject", "s3:GetEncryptionConfiguration", "s3:ListBucket", "s3:DeleteObject"

Se você usar um bucket criptografado do Amazon S3, inclua as permissões a seguir.

"kms:Decrypt", "kms:GenerateDataKey", "kms:ReEncryptFrom", "kms:ReEncryptTo", "kms:DescribeKey"
Habilitação e configuração da colaboração no Workspace.
"iam:GetUser", "iam:GetRole", "iam:ListUsers", "iam:ListRoles", "sso:GetManagedApplicationInstance", "sso-directory:SearchUsers"
Criptografe cadernos e arquivos do espaço de trabalho do EMR Studio usando chaves gerenciadas pelo cliente () com CMK AWS Key Management Service
"kms:Decrypt", "kms:GenerateDataKey", "kms:ReEncryptFrom", "kms:ReEncryptTo", "kms:DescribeKey"