

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 관리형 스토리지를 사용하여 Amazon EMR on EKS 로그 암호화
<a name="security_iam_fgac-logging-kms"></a>

다음 섹션에서는 로그에 대한 암호화를 구성하는 방법을 보여줍니다.

## 암호화 활성화
<a name="security_iam_fgac-logging-perms"></a>

자체 KMS 키를 사용하여 관리형 스토리지에서 로그를 암호화하려면 작업 실행을 제출할 때 다음 구성을 사용합니다.

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

`allowAWSToRetainLogs` 구성을 통해는 네이티브 FGAC AWS 를 사용하여 작업을 실행할 때 시스템 네임스페이스 로그를 유지할 수 있습니다. `persistentAppUI` 구성을 통해는 Spark UI AWS 를 생성하는 데 사용되는 이벤트 로그를 저장할 수 있습니다. `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에서만 사용되며 특정 가상 클러스터에서 실행되는 작업에서 생성된 로그에만 사용되도록 합니다.