

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

# 로깅 및 모니터링
<a name="security-logging-monitoring"></a>

인시던트를 탐지하고 인시던트가 발생했을 때 경고를 받고 그에 응답하려면 Amazon EMR on EKS에서 다음 옵션을 사용합니다.
+ 를 사용하여 Amazon EMR on EKS 모니터링 AWS CloudTrail -는 Amazon EMR on EKS에서 사용자, 역할 또는 AWS 서비스가 수행한 작업에 대한 레코드를 [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/) 제공합니다. 이 서비스는 Amazon EMR 콘솔에서 수행한 직접 호출과 Amazon EMR on EKS API 작업에 대한 코드 직접 호출을 이벤트로 캡처합니다. 이를 통해 Amazon EMR on EKS에서 수행된 요청, 요청이 수행된 IP 주소, 요청을 수행한 사람, 요청이 수행된 시간 및 추가 세부 정보를 확인할 수 있습니다. 자세한 내용은 [를 사용하여 Amazon EMR on EKS API 호출 로깅 AWS CloudTrail](logging-using-cloudtrail.md) 단원을 참조하십시오.
+ Amazon EMR on EKS에서 CloudWatch Events 사용 - CloudWatch Events는 AWS 리소스의 변경 사항을 설명하는 시스템 이벤트의 스트림을 거의 실시간으로 제공합니다. 또한 CloudWatch Events는 이러한 운영 변경 발생 시 이를 인지하고 응답하며, 환경에 응답하기 위한 메시지를 전송하고, 함수를 활성화하고, 변경을 수행하고, 상태 정보를 기록하는 등 필요에 따라 교정 조치를 취합니다. Amazon EMR on EKS에서 CloudWatch Events를 사용하려면 CloudTrail을 통해 Amazon EMR on EKS API 직접 호출 시 트리거되는 규칙을 생성합니다. 자세한 내용은 [Amazon CloudWatch Events를 사용하여 작업 모니터링](monitoring.md#monitoring-cloudwatch-events) 단원을 참조하십시오.

# 관리형 스토리지를 사용하여 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에서만 사용되며 특정 가상 클러스터에서 실행되는 작업에서 생성된 로그에만 사용되도록 합니다.

# 를 사용하여 Amazon EMR on EKS API 호출 로깅 AWS CloudTrail
<a name="logging-using-cloudtrail"></a>

Amazon EMR on EKS는 Amazon EMR on EKS에서 사용자, 역할 또는 AWS CloudTrail서비스가 수행한 작업에 대한 레코드를 제공하는 AWS 서비스와 통합됩니다. CloudTrail은 Amazon EMR on EKS에 대한 모든 API 직접 호출을 이벤트로 캡처합니다. 캡처되는 직접 호출에는 Amazon EMR on EKS 콘솔로부터의 직접 호출과 Amazon EMR on EKS API 작업에 대한 코드 직접 호출이 포함됩니다. 추적을 생성하면 Amazon EMR on EKS 이벤트를 포함한 CloudTrail 이벤트를 지속적으로 Amazon S3 버킷에 전송할 수 있습니다. 추적을 구성하지 않은 경우에도 **이벤트 기록**에서 CloudTrail 콘솔의 최신 이벤트를 볼 수 있습니다. CloudTrail에서 수집한 정보를 사용하여 Amazon EMR on EKS에 수행된 요청, 요청이 수행된 IP 주소, 요청을 수행한 사람, 요청이 수행된 시간 및 추가 세부 정보를 확인할 수 있습니다.

CloudTrail에 대한 자세한 내용은 [AWS CloudTrail 사용 설명서](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)를 참조하세요.

## CloudTrail에서 Amazon EMR on EKS 정보
<a name="emr-on-eks-info-in-cloudtrail"></a>

 AWS 계정을 생성할 때 계정에서 CloudTrail이 활성화됩니다. Amazon EMR on EKS에서 활동이 발생하면 해당 활동이 **이벤트 기록**의 다른 AWS 서비스 이벤트와 함께 CloudTrail 이벤트에 기록됩니다. AWS 계정에서 최근 이벤트를 보고 검색하고 다운로드할 수 있습니다. 자세한 내용은 [CloudTrail 이벤트 기록을 사용하여 이벤트 보기](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)를 참조하세요.

Amazon EMR on EKS 이벤트를 포함하여 AWS 계정에 이벤트를 지속적으로 기록하려면 추적을 생성합니다. CloudTrail은 *추적*을 사용하여 Amazon S3 버킷으로 로그 파일을 전송할 수 있습니다. 기본적으로 콘솔에서 추적을 생성하면 추적이 모든 AWS 리전에 적용됩니다. 추적은 AWS 파티션의 모든 리전에서 이벤트를 로깅하고 지정한 Amazon S3 버킷으로 로그 파일을 전송합니다. 또한 CloudTrail 로그에서 수집된 이벤트 데이터를 추가로 분석하고 조치를 취하도록 다른 AWS 서비스를 구성할 수 있습니다. 자세한 내용은 다음 자료를 참조하세요.
+ [추적 생성 개요](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)
+ [CloudTrail 지원 서비스 및 통합](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-aws-service-specific-topics.html)
+ [CloudTrail에 대한 Amazon SNS 알림 구성](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/configure-sns-notifications-for-cloudtrail.html)
+ [여러 리전에서 CloudTrail 로그 파일 받기](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html) 및 [여러 계정에서 CloudTrail 로그 파일 받기](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-receive-logs-from-multiple-accounts.html)

모든 Amazon EMR on EKS 작업은 CloudTrail에 의해 로깅되며 [Amazon EMR on EKS API 참조](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/)에 설명되어 있습니다. 예를 들어 `CreateVirtualCluster`, `StartJobRun`, `ListJobRuns` 작업을 직접 호출하면 CloudTrail 로그 파일에 항목이 생성됩니다.

모든 이벤트 또는 로그 항목에는 요청을 생성했던 사용자에 관한 정보가 포함됩니다. ID 정보를 이용하면 다음을 쉽게 판단할 수 있습니다.
+ 요청이 루트 또는 AWS Identity and Access Management (IAM) 사용자 자격 증명으로 이루어졌는지 여부입니다.
+ 역할 또는 페더레이션 사용자의 임시 자격 증명을 사용하여 요청이 생성되었는지 여부.
+ 요청이 다른 AWS 서비스에 의해 이루어졌는지 여부입니다.

자세한 내용은 [CloudTrail user Identity element](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html)를 참조하세요.

## Amazon EMR on EKS 로그 파일 항목 이해
<a name="understanding-emr-on-eks-entries"></a>

트레일이란 지정한 S3 버킷에 이벤트를 로그 파일로 입력할 수 있게 하는 구성입니다. CloudTrail 로그 파일에는 하나 이상의 로그 항목이 포함될 수 있습니다. 이벤트는 모든 소스로부터의 단일 요청을 나타내며 요청 작업, 작업 날짜와 시간, 요청 파라미터 등에 대한 정보가 들어 있습니다. CloudTrail 로그 파일은 퍼블릭 API 직접 호출의 주문 스택 트레이스가 아니므로 특정 순서로 표시되지 않습니다.

다음은 [https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_ListJobRuns.html](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_ListJobRuns.html) 작업을 보여주는 CloudTrail 로그 항목이 나타낸 예시입니다.

```
{
  "eventVersion": "1.05",
  "userIdentity": {
    "type": "AssumedRole",
    "principalId": "AIDACKCEVSQ6C2EXAMPLE:admin",
    "arn": "arn:aws:sts::012345678910:assumed-role/Admin/admin",
    "accountId": "012345678910",
    "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
    "sessionContext": {
      "sessionIssuer": {
        "type": "Role",
        "principalId": "AIDACKCEVSQ6C2EXAMPLE",
        "arn": "arn:aws:iam::012345678910:role/Admin",
        "accountId": "012345678910",
        "userName": "Admin"
      },
      "webIdFederationData": {},
      "attributes": {
        "mfaAuthenticated": "false",
        "creationDate": "2020-11-04T21:49:36Z"
      }
    }
  },
  "eventTime": "2020-11-04T21:52:58Z",
  "eventSource": "emr-containers.amazonaws.com",
  "eventName": "ListJobRuns",
  "awsRegion": "us-east-1",
  "sourceIPAddress": "203.0.113.1",
  "userAgent": "aws-cli/1.11.167 Python/2.7.10 Darwin/16.7.0 botocore/1.7.25",
  "requestParameters": {
    "virtualClusterId": "1K48XXXXXXHCB"
  },
  "responseElements": null,
  "requestID": "890b8639-e51f-11e7-b038-EXAMPLE",
  "eventID": "874f89fa-70fc-4798-bc00-EXAMPLE",
  "readOnly": true,
  "eventType": "AwsApiCall",
  "recipientAccountId": "012345678910"
}
```