

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

# GuardDuty Malware Protection for Backup: IAM ロールのアクセス許可
<a name="malware-protection-backup-iam-permissions"></a>

## マルウェアスキャンのために提供される顧客ロール
<a name="malware-protection-backup-customer-role"></a>

GuardDuty Malware Protection は、バックアップリソース、つまりスナップショット、AMIsEBS/EC2/S3 リカバリポイントでスキャンが開始されたときに、顧客ロール (スキャナーロール) が提供されることを想定しています。このロールは、GuardDuty がこれらの特定のリソースでスキャンを実行するために必要なアクセス許可を提供します。このロールのアクセス許可ポリシーと信頼ポリシーは、 にあります[ロールのアクセス許可と信頼ポリシー](#malware-protection-backup-permissions-trust-policy)。以下のセクションでは、これらの各アクセス許可が必要な理由について説明します。

## アクセス許可の詳細
<a name="malware-protection-backup-permission-details"></a>
+ `ModifySnapshotAttribute` - 暗号化されていない、カスタマーマネージドキーで暗号化されたスナップショットに GuardDuty Malware Protection サービスアカウントからアクセスできるようにします。
+ `CreateGrant` - GuardDuty Malware Protection が、GuardDuty サービスアカウントがアクセスできるカスタマーマネージドキー暗号化スナップショットからカスタマーマネージドキー暗号化 EBS ボリュームを作成してアクセスできるようにします。
+ `RetireGrant` - GuardDuty Malware Protection が、暗号化されたスナップショットを読み取るためにカスタマーマネージドキーで作成された許可を廃止できるようにします。
+ `ReEncryptTo` および `ReEncryptFrom` - EBS がカスタマーマネージドキーで暗号化されたスナップショットへのアクセスを GuardDuty に許可し、そこから暗号化されたボリュームを作成するために必要です。お客様は、共有中のスナップショットの ReEncryption をキー移行と考える場合がありますが、スナップショットは作成後も顧客の観点から変更できません。
+ `ListSnapshotBlocks` および `GetSnapshotBlock` - EBS Direct APIsは、 AWS マネージドキー暗号化スナップショットのスナップショットブロックにアクセスするために使用されます。これは、 AWS マネージドキーで暗号化されたスナップショットにクロスアカウントでアクセスできないために行われます。
+ `Decrypt` - 増分スキャンの一部として EBS Direct APIs復号を許可します。
+ `ListChangedBlocks` - 2 つのスナップショット間で変更されたブロックのリストを取得するための増分スナップショットスキャンで使用される EBS Direct API。
+ `DescribeKey` - GuardDuty Malware Protection がカスタマーアカウントの AWS マネージドキーの keyId を決定できるようにします。
+ `DescribeImages` - AMI に属しているスナップショットのリストを取得するための AMI の説明を許可します。
+ `DescribeRecoveryPoint` - サービスが復旧ポイントの詳細を取得し、復旧ポイントのリソースタイプを検証できるようにします。
+ `CreateBackupAccessPoint`、`DescribeBackupAccessPoint`、 `DeleteBackupAccessPoint` - 復旧ポイントへのアクセスに必要なアクセスポイントの作成、説明、削除をサービスに許可します。
+ `kms:Decrypt` - S3 リカバリポイントスキャン中に、サービスが S3 リカバリポイント内のオブジェクトにアクセスできるようにします。

## ロールの保護
<a name="malware-protection-backup-securing-role"></a>

ロールは、GuardDuty Malware Protection サービスプリンシパルを信頼する信頼ポリシーで設定する必要があります。これにより、GuardDuty サービス以外のプリンシパルがこのロールを引き受けることはできません。さらに、 ではなく特定のリソースにポリシーを絞り込むことをお勧めします`*`。これには、スナップショット ID とキー ID が含まれます。これにより、ロールはそれらの特定のリソースにのみアクセスできるようになります。

**重要**  
設定が正しくないと、アクセス許可が不十分であるためにスキャンが失敗する可能性があります。

## GuardDuty Malware Protection が KMS AWS で許可を使用する方法
<a name="malware-protection-backup-kms-grants"></a>

GuardDuty Malware Protection では、KMS キーを使用するための[許可](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)が必要です。

暗号化されたスナップショットまたは暗号化されたスナップショットで構成される EC2 AMI でスキャンを開始すると、GuardDuty Malware Protection は [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) リクエストを KMS に送信することで、ユーザーに代わって許可を作成します。 AWS これらの許可により、GuardDuty はアカウント内の特定のキーにアクセスできます。

GuardDuty Malware Protection では、カスタマーマネージドキーを次の内部オペレーションに使用する権限が必要です。
+ [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) リクエストを AWS に送信して、マルウェアスキャン用に送信されたリソースが暗号化されている対称カスタマーマネージドキーに関する詳細を取得します。
+ [CreateVolume](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html) API を使用して暗号化されたスナップショットから EBS ボリュームを作成し、同じキーでボリュームを暗号化します。
+ 増分スキャン中に [GetSnapshotBlock](https://docs.aws.amazon.com/ebs/latest/APIReference/API_GetSnapshotBlock.html) API を使用してスナップショットのスナップショットブロックにアクセスします。
+ KMS AWS に [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) リクエストを送信して暗号化されたデータキーを復号し、スキャン中にスナップショット上のデータを読み取るために使用できます。

作成された権限はいつでも取り消すか、カスタマーマネージドキーへのサービスのアクセスを削除できます。その場合、GuardDuty はカスタマーマネージドキーによって暗号化されたデータにアクセスできず、そのデータに依存するオペレーションに影響します。

## GuardDuty Malware Protection 暗号化コンテキスト
<a name="malware-protection-backup-encryption-context"></a>

[暗号化コンテキスト](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context)は、データに関する追加のコンテキスト情報を含むキーと値のペアのオプションセットです。

データを暗号化するリクエストに暗号化コンテキストを含めると、 AWS KMS; は暗号化コンテキストを暗号化されたデータにバインドします。データを復号化するには、そのリクエストに (暗号化時と) 同じ暗号化コンテキストを含めます。

GuardDuty Malware Protection は、2 つの暗号化コンテキストのいずれかを使用します。

**暗号化コンテキスト 1:** キーは です`aws:guardduty:id`。

```
"encryptionContext": {
    "aws:guardduty:id": "snap-11112222333344"
}
```

この暗号化コンテキストは、CreateGrant、Decrypt、GenerateDataKeyWithoutPlaintext、ReEncryptTo、RetireGrant、DescribeKey のグラントオペレーションで使用されます。

この暗号化コンテキストと許可オペレーションを使用して、現在のリソースに 1 つの許可が作成されます。

**暗号化コンテキスト 2:** キーは です `aws:ebs:id`

```
"encryptionContext": {
    "aws:ebs:id": "snap-11112222333344"
}
```

この暗号化コンテキストは、ReEncryptFrom、Decrypt、RetireGrant、DescribeKey のグラントオペレーションで使用されます。

これらの暗号化コンテキストと権限オペレーションを使用して 3 つの権限が作成されます。`ReEncryptFrom` 許可オペレーションを使用したターゲットスナップショット上の 1 つ。`Decrypt, RetireGrant, DescribeKey` オペレーションを含むターゲットスナップショットの 2 番目のスナップショット。また、2 番目のグラントと同じグラントオペレーションを持つベーススナップショットの 3 つ目。

## ロールのアクセス許可と信頼ポリシー
<a name="malware-protection-backup-permissions-trust-policy"></a>

**アクセス許可ポリシー**

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [{
            "Effect": "Allow",
            "Action": [
                "ebs:ListSnapshotBlocks",
                "ebs:ListChangedBlocks",
                "ebs:GetSnapshotBlock"
            ],
            "Resource": "arn:aws:ec2:*::snapshot/*"
        },
        {
            "Sid": "CreateGrantPermissions",
            "Effect": "Allow",
            "Action": "kms:CreateGrant",
            "Resource": "arn:aws:kms:*:*:key/*",
            "Condition": {
                "ForAnyValue:StringLike": {
                    "kms:EncryptionContext:aws:guardduty:id": "snap-*",
                    "kms:ViaService": [
                        "guardduty.*.amazonaws.com",
                        "backup.*.amazonaws.com"
                    ]
                },
                "ForAllValues:StringEquals": {
                    "kms:GrantOperations": [
                        "Decrypt",
                        "CreateGrant",
                        "GenerateDataKeyWithoutPlaintext",
                        "ReEncryptFrom",
                        "ReEncryptTo",
                        "RetireGrant",
                        "DescribeKey"
                    ]
                },
                "Bool": {
                    "kms:GrantIsForAWSResource": "true"
                }
            }
        },
        {
            "Sid": "CreateGrantPermissionsForReEncryptAndDirectAPIs",
            "Effect": "Allow",
            "Action": "kms:CreateGrant",
            "Resource": "arn:aws:kms:*:*:key/*",
            "Condition": {
                "ForAnyValue:StringLike": {
                    "kms:EncryptionContext:aws:ebs:id": "snap-*",
                    "kms:ViaService": [
                        "guardduty.*.amazonaws.com",
                        "backup.*.amazonaws.com"
                    ]
                },
                "ForAllValues:StringEquals": {
                    "kms:GrantOperations": [
                        "Decrypt",
                        "ReEncryptTo",
                        "ReEncryptFrom",
                        "RetireGrant",
                        "DescribeKey"
                    ]
                },
                "Bool": {
                    "kms:GrantIsForAWSResource": "true"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeImages",
                "ec2:DescribeSnapshots"
            ],
            "Resource": "*"
        },
        {
            "Sid": "ShareSnapshotPermission",
            "Effect": "Allow",
            "Action": [
                "ec2:ModifySnapshotAttribute"
            ],
            "Resource": "arn:aws:ec2:*:*:snapshot/*"
        },
        {
            "Sid": "ShareSnapshotKMSPermission",
            "Effect": "Allow",
            "Action": [
                "kms:ReEncryptTo",
                "kms:ReEncryptFrom"
            ],
            "Resource": "arn:aws:kms:*:*:key/*",
            "Condition": {
                "StringLike": {
                    "kms:ViaService": "ec2.*.amazonaws.com"
                }
            }
        },
        {
            "Sid": "DescribeKeyPermission",
            "Effect": "Allow",
            "Action": "kms:DescribeKey",
            "Resource": "arn:aws:kms:*:*:key/*"
        },
        {
            "Sid": "DescribeRecoveryPointPermission",
            "Effect": "Allow",
            "Action": [
                "backup:DescribeRecoveryPoint"
            ],
            "Resource": "*"
        },
        {
            "Sid": "CreateBackupAccessPointPermissions",
            "Effect" : "Allow",
            "Action" : [
                "backup:CreateBackupAccessPoint"  
            ],
            "Resource": "arn:aws:backup:*:*:recovery-point:*"
        },
        {
            "Sid": "ReadAndDeleteBackupAccessPointPermissions",
            "Effect" : "Allow",
            "Action" : [
                "backup:DescribeBackupAccessPoint",
                "backup:DeleteBackupAccessPoint"     
            ],
            "Resource": "*"
        },
        {
            "Sid": "KMSKeyPermissionsForInstantAccess",
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": "arn:aws:kms:*:*:key/*",
            "Condition": {
                "StringLike": {
                    "kms:ViaService": "backup.*.amazonaws.com"
                }
            }
        }
    ]
}
```

**信頼ポリシー**

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "malware-protection.guardduty.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```