

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# マネージドストレージによる Amazon EMR on EKS ログの暗号化
<a name="security_iam_fgac-logging-kms"></a>

以下のセクションでは、ログの暗号化を設定する方法を示します。

## Enable encryption
<a name="security_iam_fgac-logging-perms"></a>

独自の KMS キーを使用してマネージドストレージのログを暗号化するには、ジョブ実行を送信するときに以下の設定を使用します。

```
"monitoringConfiguration": {
            "managedLogs": {
                "allowAWSToRetainLogs":"ENABLED",
                "encryptionKeyArn":"KMS key arn"
            },
            "persistentAppUI": "ENABLED"
        }
```

`allowAWSToRetainLogs` この設定により AWS 、 はネイティブ FGAC を使用してジョブを実行するときにシステム名前空間ログを保持できます。`persistentAppUI` この設定により AWS 、 は Spark UI の生成に使用されるイベントログを保存できます。`encryptionKeyArn` は、 AWSによって保存されるログの暗号化に使用する KMS キー ARN を指定するために使用されます。

## ログ暗号化に必要なアクセス許可
<a name="security_iam_fgac-logging-kms-perms"></a>

ジョブを送信するか、Spark UI を表示するユーザーには、暗号化キーのアクション `kms:DescribeKey`、`kms:GenerateDataKey`、および `kms:Decrypt` を許可する必要があります。これらのアクセス許可は、キーの有効性を検証し、ユーザーが KMS キーで暗号化されたログを読み書きするために必要なアクセス許可を持っていることを確認するために使用されます。ジョブを送信するユーザーに必要なキーのアクセス許可が付与されていない場合、Amazon EMR on EKS はジョブ実行の送信を拒否します。

**StartJobRun の呼び出しに使用されるロールの IAM ポリシーの例**

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "emr-containers:StartJobRun"
      ],
      "Resource": [
        "*"
      ],
      "Effect": "Allow",
      "Sid": "AllowEMRCONTAINERSStartjobrun"
    },
    {
      "Action": [
        "kms:DescribeKey",
        "kms:Decrypt",
        "kms:GenerateDataKey"
      ],
      "Resource": [
        "arn:aws:kms:*:*:key/key-id"
      ],
      "Effect": "Allow",
      "Sid": "AllowKMSDescribekey"
    }
  ]
}
```

------

また、`persistentappui.elasticmapreduce.amazonaws.com` および `elasticmapreduce.amazonaws.com` サービスプリンシパルに `kms:GenerateDataKey` および `kms:Decrypt` を許可するように KMS キーを設定する必要があります。これにより、EMR は KMS キーで暗号化されたログをマネージドストレージに読み書きできます。

**KMS キーポリシーの例**

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "kms:DescribeKey"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringLike": {
          "kms:viaService": "emr-containers.*.amazonaws.com"
        }
      },
      "Sid": "AllowKMSDescribekey"
    },
    {
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringLike": {
          "kms:viaService": "emr-containers.*.amazonaws.com",
          "kms:EncryptionContext:aws:emr-containers:virtualClusterId": "virtual cluster id"
        }
      },
      "Sid": "AllowKMSDecryptGenerate"
    },
    {
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringLike": {
          "kms:EncryptionContext:aws:emr-containers:virtualClusterId": "virtual cluster id"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:emr-containers:*:*:/virtualclusters/virtual_cluster_id"
        }
      },
      "Sid": "AllowKMSDecryptService"
    }
  ]
}
```

------

セキュリティのベストプラクティスとして、`kms:viaService`、`kms:EncryptionContext`、および `aws:SourceArn` を追加することをお勧めします。これらの条件は、キーが Amazon EMR on EKS でのみ使用され、特定の仮想クラスターで実行されているジョブから生成されたログにのみ使用されるようにするのに役立ちます。