

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

# ログ記録とモニタリング
<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>

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

## 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 でのみ使用され、特定の仮想クラスターで実行されているジョブから生成されたログにのみ使用されるようにするのに役立ちます。

# を使用した Amazon EMR on EKS API コールのログ記録 AWS CloudTrail
<a name="logging-using-cloudtrail"></a>

Amazon EMR on EKS は AWS CloudTrail、Amazon EMR on EKS のユーザー、ロール、または のサービスによって実行されたアクションを記録する AWS サービスである と統合されています。CloudTrail は、Amazon EMR on EKS に対するすべての API コールをイベントとしてキャプチャします。キャプチャされる呼び出しには、Amazon EMR on EKS コンソールからの呼び出しと、Amazon EMR on EKS API オペレーションへのコード呼び出しが含まれます。証跡を作成する場合は、Amazon EMR on EKS のイベントなど、Amazon S3 バケットへの CloudTrail イベントの継続的な配信を有効にすることができます。証跡を設定しない場合でも、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>

CloudTrail は、 AWS アカウントの作成時にアカウントで有効になります。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 ログファイルにエントリが生成されます。

各イベントまたはログエントリには、誰がリクエストを生成したかという情報が含まれます。アイデンティティ情報は、以下を判別するのに役立ちます。
+ リクエストがルートまたは AWS Identity and Access Management (IAM) ユーザー認証情報を使用して行われたかどうか。
+ リクエストがロールまたはフェデレーションユーザーのテンポラリなセキュリティ認証情報を使用して行われたかどうか。
+ リクエストが別の AWS サービスによって行われたかどうか。

詳細については、「[CloudTrail userIdentity エレメント](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>

「トレイル」は、指定した Amazon 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"
}
```