

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 Amazon EMR Studio 設定受信任的身分傳播
<a name="setting-up-tip-emr"></a>

下列程序會逐步引導您在對執行 的 Amazon Athena 工作群組或 Amazon EMR 叢集的查詢中設定 Amazon EMR Studio以進行受信任身分傳播Apache Spark。

## 先決條件
<a name="setting-up-tip-emr-prereqs"></a>

您必須先設定下列項目，才能開始使用本教學課程：

1. [啟用 IAM Identity Center](enable-identity-center.md)。建議使用[組織執行個體](organization-instances-identity-center.md)。如需詳細資訊，請參閱[先決條件和考量事項](trustedidentitypropagation-overall-prerequisites.md)。

1. [將使用者和群組從您的身分來源佈建至 IAM Identity Center](tutorials.md)。

若要從 Amazon EMR Studio 完成設定信任的身分傳播，EMR Studio 管理員必須執行下列步驟。

## 步驟 1. 建立 EMR Studio 所需的 IAM 角色
<a name="setting-up-tip-emr-step1"></a>

在此步驟中，Amazon EMR Studio管理員會建立 和 IAM 服務角色，以及 EMR 的 IAM 使用者角色Studio。

1. **[建立 EMR Studio 服務角色](https://docs.aws.amazon.com//emr/latest/ManagementGuide/emr-studio-service-role.html)** - EMR Studio 擔任此 IAM 角色，以安全地管理工作區和筆記本、連線至叢集，以及處理資料互動。

   1. 導覽至 IAM 主控台 ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)：//) 並建立 IAM 角色。

   1. 選取 **AWS 服務**做為信任的實體，然後選擇 **Amazon EMR**。連接下列政策以定義角色的許可和信任關係。

      若要使用這些政策，請以您自己的資訊取代範例政策中的*斜體預留位置文字*。如需其他指示，請參閱[建立政策](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies_create.html)或[編輯政策](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies_manage-edit.html)。

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Sid": "ObjectActions",
                  "Effect": "Allow",
                  "Action": [
                      "s3:PutObject",
                      "s3:GetObject",
                      "s3:DeleteObject"
                  ],
                  "Resource": [
                      "arn:aws:s3:::Your-S3-Bucket-For-EMR-Studio/*"
                  ],
                  "Condition": {
                      "StringEquals": {
                          "aws:ResourceAccount": "Your-AWS-Account-ID"
                      }
                  }
              },
              {
                  "Sid": "BucketActions",
                  "Effect": "Allow",
                  "Action": [
                      "s3:ListBucket",
                      "s3:GetEncryptionConfiguration"
                  ],
                  "Resource": [
                      "arn:aws:s3:::Your-S3-Bucket-For-EMR-Studio"
                  ],
                  "Condition": {
                      "StringEquals": {
                          "aws:ResourceAccount": "Your-AWS-Account-ID"
                      }
                  }
              }
          ]
      }
      ```

------

      如需所有服務角色許可的參考，請參閱 [EMR Studio 服務角色許可](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-studio-service-role.html#emr-studio-service-role-permissions-table)。

1. **[為 IAM Identity Center 身分驗證建立 EMR Studio 使用者角色](https://docs.aws.amazon.com//emr/latest/ManagementGuide/emr-studio-user-permissions.html#emr-studio-create-user-role)** - 當使用者透過 IAM Identity Center 登入以管理工作區、EMR 叢集、任務、git 儲存庫時，EMR Studio 會擔任此角色。**此角色用於啟動信任的身分傳播工作流程**。
**注意**  
EMR Studio 使用者角色不需要包含存取 AWS Glue Catalog. AWS Lake Formation permissions 中資料表 Amazon S3 位置的許可。註冊的湖位置將用於接收臨時許可。

   下列範例政策可用於允許 EMR Studio 使用者使用 Athena 工作群組執行查詢的角色。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "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": "AllowSecretManagerListSecrets",
               "Action": [
                   "secretsmanager:ListSecrets"
               ],
               "Resource": "*",
               "Effect": "Allow"
           },
           {
               "Sid": "AllowSecretCreationWithEMRTagsAndEMRStudioPrefix",
               "Effect": "Allow",
               "Action": "secretsmanager:CreateSecret",
               "Resource": "arn:aws:secretsmanager:*:*:secret:emr-studio-*",
               "Condition": {
                   "StringEquals": {
                       "aws:RequestTag/for-use-with-amazon-emr-managed-policies": "true"
                   }
               }
           },
           {
               "Sid": "AllowAddingTagsOnSecretsWithEMRStudioPrefix",
               "Effect": "Allow",
               "Action": "secretsmanager:TagResource",
               "Resource": "arn:aws:secretsmanager:*:*:secret:emr-studio-*"
           },
           {
               "Sid": "AllowPassingServiceRoleForWorkspaceCreation",
               "Action": "iam:PassRole",
               "Resource": [
                   "arn:aws:iam::111122223333:role/service-role/AmazonEMRStudio_ServiceRole_Name"
               ],
               "Effect": "Allow"
           },
           {
               "Sid": "AllowS3ListAndLocationPermissions",
               "Action": [
                   "s3:ListAllMyBuckets",
                   "s3:ListBucket",
                   "s3:GetBucketLocation"
               ],
               "Resource": "arn:aws:s3:::*",
               "Effect": "Allow"
           },
           {
               "Sid": "AllowS3ReadOnlyAccessToLogs",
               "Action": [
                   "s3:GetObject"
               ],
               "Resource": [
                   "arn:aws:s3:::aws-logs-Your-AWS-Account-ID-Region/elasticmapreduce/*"
               ],
               "Effect": "Allow"
           },
           {
               "Sid": "AllowAthenaQueryExecutions",
               "Effect": "Allow",
               "Action": [
                   "athena:StartQueryExecution",
                   "athena:GetQueryExecution",
                   "athena:GetQueryResults",
                   "athena:StopQueryExecution",
                   "athena:ListQueryExecutions",
                   "athena:GetQueryResultsStream",
                   "athena:ListWorkGroups",
                   "athena:GetWorkGroup",
                   "athena:CreatePreparedStatement",
                   "athena:GetPreparedStatement",
                   "athena:DeletePreparedStatement"
               ],
               "Resource": "*"
           },
           {
               "Sid": "AllowGlueSchemaManipulations",
               "Effect": "Allow",
               "Action": [
                   "glue:GetDatabase",
                   "glue:GetDatabases",
                   "glue:GetTable",
                   "glue:GetTables",
                   "glue:GetPartition",
                   "glue:GetPartitions"
               ],
               "Resource": "*"
           },
           {
               "Sid": "AllowQueryEditorToAccessWorkGroup",
               "Effect": "Allow",
               "Action": "athena:GetWorkGroup",
               "Resource": "arn:aws:athena:*:111122223333:workgroup*"
           },
           {
               "Sid": "AllowConfigurationForWorkspaceCollaboration",
               "Action": [
                   "elasticmapreduce:UpdateEditor",
                   "elasticmapreduce:PutWorkspaceAccess",
                   "elasticmapreduce:DeleteWorkspaceAccess",
                   "elasticmapreduce:ListWorkspaceAccessIdentities"
               ],
               "Resource": "*",
               "Effect": "Allow",
               "Condition": {
                   "StringEquals": {
                       "elasticmapreduce:ResourceTag/creatorUserId": "${aws:userId}"
                   }
               }
           },
           {
               "Sid": "DescribeNetwork",
               "Effect": "Allow",
               "Action": [
                   "ec2:DescribeVpcs",
                   "ec2:DescribeSubnets",
                   "ec2:DescribeSecurityGroups"
               ],
               "Resource": "*"
           },
           {
               "Sid": "ListIAMRoles",
               "Effect": "Allow",
               "Action": [
                   "iam:ListRoles"
               ],
               "Resource": "*"
           },
           {
               "Sid": "AssumeRole",
               "Effect": "Allow",
               "Action": [
                   "sts:AssumeRole"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

   下列信任政策允許 EMR Studio 擔任該角色：
**注意**  
需要額外許可，才能利用 EMR Studio Workspaces 和 EMR Notebooks。如需詳細資訊，請參閱[建立 EMR Studio 使用者的許可政策](https://docs.aws.amazon.com//emr/latest/ManagementGuide/emr-studio-user-permissions.html#emr-studio-permissions-policies)。

**您可以透過以下連結找到更多資訊：**
   + [使用客戶管理政策定義自訂 IAM 許可](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies_create.html)
   + [EMR Studio 服務角色許可](https://docs.aws.amazon.com//emr/latest/ManagementGuide/emr-studio-service-role.html#emr-studio-service-role-permissions-table)

## 步驟 2. 建立和設定 EMR Studio
<a name="setting-up-tip-emr-step2"></a>

在此步驟中，您將在 EMR Studio 主控台中建立 Amazon EMR Studio，並使用您在 中建立的 IAM 角色[步驟 1. 建立 EMR Studio 所需的 IAM 角色步驟 2. 建立和設定 EMR Studio](#setting-up-tip-emr-step1)。

1. 導覽至 EMR Studio 主控台，選取**建立 Studio** 和**自訂設定**選項。您可以建立新的 S3 儲存貯體或使用現有的儲存貯體。您可以勾選方塊，**使用您自己的 KMS 金鑰加密工作區檔案**。如需詳細資訊，請參閱[AWS Key Management Service](https://docs.aws.amazon.com//kms/latest/developerguide/overview.html)。  
![\[步驟 1 在 EMR 主控台中建立 EMR Studio。\]](http://docs.aws.amazon.com/zh_tw/singlesignon/latest/userguide/images/emr-tutorial-step-3.1.png)

1. 在**服務角色下，讓 Studio 存取您的資源**，[步驟 1. 建立 EMR Studio 所需的 IAM 角色步驟 2. 建立和設定 EMR Studio](#setting-up-tip-emr-step1)從功能表中選取在 中建立的服務角色。

1. 在**身分驗證**下選擇 **IAM Identity Center**。選取在 中建立的使用者角色[步驟 1. 建立 EMR Studio 所需的 IAM 角色步驟 2. 建立和設定 EMR Studio](#setting-up-tip-emr-step1)。  
![\[步驟 3 在 EMR 主控台中建立 EMR Studio，為身分驗證方法選取 IAM Identity Center。\]](http://docs.aws.amazon.com/zh_tw/singlesignon/latest/userguide/images/emr-tutorial-step-3.3.png)

1. 勾選**信任的身分傳播**方塊。在應用程式存取區段下選擇**僅指派的使用者和群組**，這可讓您僅授予授權的使用者和群組存取此 Studio。

1. *（選用）* - 如果您搭配 EMR 叢集使用此 Studio，則可以設定 VPC 和子網路。  
![\[步驟 4 在 EMR 主控台中建立 EMR Studio，選取網路和安全性設定。\]](http://docs.aws.amazon.com/zh_tw/singlesignon/latest/userguide/images/emr-tutorial-step-3.4.png)

1. 檢閱所有詳細資訊，然後選取**建立 Studio**。

1. 設定 Athena WorkGroup 或 EMR 叢集之後，請登入 Studio 的 URL 以：

   1. 使用查詢編輯器執行 Athena 查詢。

   1. 使用Jupyter筆記本在工作區中執行 Spark 任務。