Creazione di un ruolo di servizio EMR Studio - Amazon EMR

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Creazione di un ruolo di servizio EMR Studio

Informazioni sul ruolo di servizio EMR Studio

Ogni EMR Studio utilizza un ruolo IAM con autorizzazioni che consentono allo Studio di interagire con altri servizi AWS. Questo ruolo di servizio deve includere autorizzazioni che consentano a EMR Studio di stabilire un canale di rete sicuro tra Workspace e cluster, per archiviare i file notebook in Amazon S3 Control e per accedere ad AWS Secrets Manager durante il collegamento di un Workspace a un repository Git.

Utilizza il ruolo di servizio Studio (anziché le policy di sessione) per definire tutte le autorizzazioni di accesso ad Amazon S3 per l'archiviazione dei file notebook e per definire autorizzazioni di accesso AWS Secrets Manager.

Come creare un ruolo di servizio per EMR Studio su Amazon EC2 o Amazon EKS

  1. Segui le istruzioni in Creazione di un ruolo per delegare le autorizzazioni a un servizio AWS per creare il ruolo di servizio con le policy di attendibilità riportate di seguito.

    Importante

    La policy di affidabilità riportata di seguito include le chiavi di condizione globale aws:SourceArn e aws:SourceAccount per limitare le autorizzazioni che concedi a EMR Studio a determinate risorse del tuo account. In questo modo puoi proteggerti dal problema del "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. Rimuovere le autorizzazioni di ruolo predefinite. Quindi, includere le autorizzazioni dalla seguente policy di autorizzazione IAM di esempio. In alternativa, è possibile creare una policy personalizzata che utilizzi Autorizzazioni del ruolo di servizio EMR Studio.

    Importante
    • Affinché il controllo degli accessi basato su tag di Amazon EC2 funzioni con EMR Studio, devi impostare l'accesso per l'API ModifyNetworkInterfaceAttribute come mostrato nella seguente policy.

    • Affinché EMR Studio funzioni con il ruolo di servizio, le istruzioni seguenti devono rimanere invariate: AllowAddingEMRTagsDuringDefaultSecurityGroupCreation e AllowAddingTagsDuringEC2ENICreation.

    • Per utilizzare la policy di esempio, è necessario taggare le seguenti risorse con la chiave "for-use-with-amazon-emr-managed-policies" e il valore "true".

      • Amazon Virtual Private Cloud (VPC) designato per EMR Studio.

      • Ogni sottorete che si desidera utilizzare con Studio.

      • Qualsiasi gruppo di sicurezza EMR Studio personalizzato. È necessario applicare tag a tutti i gruppi di sicurezza creati durante il periodo di anteprima di EMR Studio se si desidera continuare a utilizzarli.

      • Segreti gestiti in AWS Secrets Manager che vengono utilizzati da utenti di Studio per collegare i repository Git a un Workspace.

      Puoi applicare i tag alle risorse utilizzando la scheda Tag nella schermata delle risorse pertinente nella sezione AWS Management Console.

    Se applicabile, modifica * in "Resource":"*" nella policy seguente per specificare il nome della risorsa Amazon (ARN) delle risorse che l'istruzione copre per i tuoi casi d'uso.

    { "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. Offri al ruolo di servizio l'accesso in lettura e scrittura alla tua posizione Amazon S3 per EMR Studio. Utilizza il seguente set minimo di autorizzazioni. Per ulteriori informazioni, consulta l'esempio Amazon S3: consente l'accesso in lettura e scrittura agli oggetti di un bucket S3, in modo programmatico e nella console.

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

    Se si crittografa il bucket Amazon S3, devi includere le seguenti autorizzazioni per AWS Key Management Service.

    "kms:Decrypt", "kms:GenerateDataKey", "kms:ReEncryptFrom", "kms:ReEncryptTo", "kms:DescribeKey"
  4. Se desideri controllare l'accesso ai segreti Git a livello di utente, aggiungi autorizzazioni basate su tag a secretsmanager:GetSecretValue nella policy del ruolo utente di EMR Studio e rimuovi le autorizzazioni alla policy secretsmanager:GetSecretValue dalla policey del ruolo di servizio di EMR Studio. Per ulteriori informazioni sull'impostazione di autorizzazioni utente granulari, consulta Creazione di policy di autorizzazione per gli utenti di EMR Studio.

Ruolo di servizio minimo per EMR Serverless

Se desideri eseguire carichi di lavoro interattivi con EMR Serverless tramite notebook di EMR Studio, utilizza la stessa policy di attendibilità utilizzata per configurare EMR Studio nella sezione precedente, Come creare un ruolo di servizio per EMR Studio su Amazon EC2 o Amazon EKS.

Per la tua policy IAM, la policy minima valida prevede le seguenti autorizzazioni. Aggiorna bucket-name con il nome del bucket che intendi utilizzare quando configuri EMR Studio e WorkSpace. EMR Studio utilizza il bucket per il backup delle istanze WorkSpaces e dei file notebook nel 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 intendi utilizzare un bucket Amazon S3 crittografato, aggiungi le seguenti autorizzazioni al policy:

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

Autorizzazioni del ruolo di servizio EMR Studio

Nella tabella seguente sono elencate le operazioni eseguite da EMR Studio utilizzando il ruolo di servizio, insieme alle operazioni IAM necessarie per ogni operazione.

Operazione Azioni
Stabilisci un canale di rete protetto tra un Workspace e un cluster EMR ed esegui le azioni di eliminazione necessarie.
"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"
Utilizza le credenziali Git archiviate in AWS Secrets Manager per collegare i repository Git a un Workspace.
"secretsmanager:GetSecretValue"
Applica tag AWS all'interfaccia di rete e ai gruppi di sicurezza predefiniti creati da EMR Studio durante la configurazione del canale di rete sicuro. Per ulteriori informazioni, consulta Assegnazione di tag alle risorse AWS.
"ec2:CreateTags"
Accedi o carica i file notebook e i metadati in Amazon S3.
"s3:PutObject", "s3:GetObject", "s3:GetEncryptionConfiguration", "s3:ListBucket", "s3:DeleteObject"

Se utilizzi un bucket Amazon S3 crittografato, devi includere le seguenti autorizzazioni.

"kms:Decrypt", "kms:GenerateDataKey", "kms:ReEncryptFrom", "kms:ReEncryptTo", "kms:DescribeKey"
Abilita e configura la collaborazione di Workspace.
"iam:GetUser", "iam:GetRole", "iam:ListUsers", "iam:ListRoles", "sso:GetManagedApplicationInstance", "sso-directory:SearchUsers"
Crittografa i notebook e i file dell'area di lavoro EMR Studio utilizzando chiavi gestite dal cliente (CMK) con AWS Key Management Service
"kms:Decrypt", "kms:GenerateDataKey", "kms:ReEncryptFrom", "kms:ReEncryptTo", "kms:DescribeKey"