

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

# 用於與 Apache Ranger 進行原生整合的 IAM 角色
<a name="emr-ranger-iam"></a>

Amazon EMR 與 Apache Ranger 之間的整合依賴於您在啟動叢集之前應建立的三個關鍵角色：
+ 適用於 Amazon EMR 的自訂 Amazon EC2 執行個體設定檔
+ Apache Ranger 引擎的 IAM 角色
+  AWS 其他服務的 IAM 角色

本章節提供這些角色以及您需要為每個 IAM 角色包含之政策的概觀。如需有關建立這些角色的資訊，請參閱 [設定 Ranger Admin 伺服器以與 Amazon EMR 整合](emr-ranger-admin.md)。

# Amazon EMR 的 EC2 執行個體描述檔
<a name="emr-ranger-iam-ec2"></a>

Amazon EMR 使用 IAM 服務角色代表您執行動作，以佈建和管理叢集。叢集 EC2 執行個體的服務角色 (也稱為 Amazon EMR 的 EC2 執行個體設定檔) 是一種特殊類型的服務角色，在啟動時指派給叢集中的每個 EC2 執行個體。

若要定義 EMR 叢集與 Amazon S3 資料和受 Apache Ranger 和其他 AWS 服務保護的 Hive 中繼存放區互動的許可，請在啟動叢集`EMR_EC2_DefaultRole`時定義要使用的自訂 EC2 執行個體描述檔，而非 。

如需詳細資訊，請參閱[叢集 EC2 執行個體的服務角色 (EC2 執行個體設定檔)](emr-iam-role-for-ec2.md)及[使用 Amazon EMR 自訂 IAM 角色](emr-iam-roles-custom.md)。

您需要將下列陳述式新增至 Amazon EMR 的預設 EC2 執行個體設定檔，才能標記工作階段並存取存放 TLS 憑證 AWS Secrets Manager 的 。

```
    {
      "Sid": "AllowAssumeOfRolesAndTagging",
      "Effect": "Allow",
      "Action": ["sts:TagSession", "sts:AssumeRole"],
      "Resource": [
        "arn:aws:iam::<AWS_ACCOUNT_ID>:role/<RANGER_ENGINE-PLUGIN_DATA_ACCESS_ROLE_NAME>",
        "arn:aws:iam::<AWS_ACCOUNT_ID>:role/<RANGER_USER_ACCESS_ROLE_NAME>"
      ]
    },
    {
        "Sid": "AllowSecretsRetrieval",
        "Effect": "Allow",
        "Action": "secretsmanager:GetSecretValue",
        "Resource": [
            "arn:aws:secretsmanager:<REGION>:<AWS_ACCOUNT_ID>:secret:<PLUGIN_TLS_SECRET_NAME>*",
            "arn:aws:secretsmanager:<REGION>:<AWS_ACCOUNT_ID>:secret:<ADMIN_RANGER_SERVER_TLS_SECRET_NAME>*"
        ]
    }
```

**注意**  
對於 Secrets Manager 許可，請勿忘記機密名稱結尾的萬用字元 ("\$1")，否則您的請求將會失敗。萬用字元適用於機密版本。

**注意**  
將 AWS Secrets Manager 政策的範圍限制為僅佈建所需的憑證。

# Apache Ranger 的 IAM 角色
<a name="emr-ranger-iam-ranger"></a>

此角色為可信執行引擎 (例如 Apache Hive 和 Amazon EMR Record Server) 提供憑證，以存取 Amazon S3 資料。如果您使用的是 S3 SSE-KMS，則僅使用此角色來存取 Amazon S3 資料，包括任何 KMS 金鑰。

必須使用下列範例中所述的最低政策來建立此角色。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "CloudwatchLogsPermissions",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:logs:*:123456789012:log-group:CLOUDWATCH_LOG_GROUP_NAME_IN_SECURITY_CONFIGURATION:*"
      ]
    },
    {
      "Sid": "BucketPermissionsInS3Buckets",
      "Action": [
        "s3:CreateBucket",
        "s3:DeleteBucket",
        "s3:ListAllMyBuckets",
        "s3:ListBucket"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket1",
        "arn:aws:s3:::amzn-s3-demo-bucket2"
      ]
    },
    {
      "Sid": "ObjectPermissionsInS3Objects",
      "Action": [
        "s3:GetObject",
        "s3:DeleteObject",
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket1/*",
        "arn:aws:s3:::amzn-s3-demo-bucket2/*"
      ]
    }
  ]
}
```

------

**重要**  
必須包含 CloudWatch 日誌資源結尾的星號 "\$1"，以提供寫入日誌串流的許可。

**注意**  
如果您使用 EMRFS 一致性檢視或 S3-SSE 加密，請向 DynamoDB 資料表和 KMS 金鑰新增許可，以便執行引擎可以與這些引擎互動。

Apache Ranger 的 IAM 角色由 EC2 執行個體設定檔角色擔任。使用下列範例建立信任政策，以允許 EC2 執行個體設定檔角色擔任 Apache Ranger 的 IAM 角色。

```
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<AWS_ACCOUNT_ID>:role/<EC2 INSTANCE PROFILE ROLE NAME eg. EMR_EC2_DefaultRole>"
      },
      "Action": ["sts:AssumeRole", "sts:TagSession"]
    }
```

# 適用於 Amazon EMR 整合之 AWS 其他服務的 IAM 角色
<a name="emr-ranger-iam-other-AWS"></a>

此角色為不信任執行引擎的使用者提供登入資料 AWS ，以便在需要時與服務互動。除非所有使用者都應可以存取 Amazon S3 資料，否則請勿使用此 IAM 角色來允許存取 Amazon S3 資料。

EC2 執行個體設定檔角色將會擔任此角色。使用下列範例建立信任政策，以允許 EC2 執行個體設定檔角色擔任 Apache Ranger 的 IAM 角色。

```
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<AWS_ACCOUNT_ID>:role/<EC2 INSTANCE PROFILE ROLE NAME eg. EMR_EC2_DefaultRole>"
      },
      "Action": ["sts:AssumeRole", "sts:TagSession"]
    }
```

# 驗證 Amazon EMR 與 Apache Ranger 整合的許可
<a name="emr-ranger-iam-validate"></a>

如需有關驗證許可的指示，請參閱 [Apache Ranger 疑難排解](emr-ranger-troubleshooting.md)。