

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

# サービス間の混乱した代理の防止
<a name="cross-service-confused-deputy-prevention"></a>

混乱した代理問題は、アクションを実行するためのアクセス許可を持たないエンティティが、より特権のあるエンティティにアクションの実行を強制できてしまう場合に生じる、セキュリティ上の問題です。では AWS、サービス間のなりすましにより、混乱した代理問題が発生する可能性があります。サービス間でのなりすましは、1 つのサービス (*呼び出し元サービス*) が、別のサービス (*呼び出し対象サービス*) を呼び出すときに発生する可能性があります。呼び出し元サービスは、本来ならアクセスすることが許可されるべきではない方法でその許可を使用して、別のお客様のリソースに対する処理を実行するように操作される場合があります。これを防ぐため、 AWS では、アカウントのリソースへのアクセス権が付与されたサービスプリンシパルで、すべてのサービスのデータを保護するために役立つツールを提供しています。

リソースポリシーで [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)および [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) グローバル条件コンテキストキーを使用して、 がリソースに別のサービス AWS Database Migration Service に付与するアクセス許可を制限することをお勧めします。`aws:SourceArn` 値に AWS DMS レプリケーションインスタンス名 (ARN) などのアカウント ID が含まれていない場合は、両方のグローバル条件コンテキストキーを使用してアクセス権限を制限する必要があります。同じポリシーステートメントでこれらのグローバル条件コンテキストキーの両方を使用し、アカウント ID に`aws:SourceArn` の値が含まれていない場合、`aws:SourceAccount` 値と `aws:SourceArn` 値の中のアカウントには、同じアカウント ID を使用する必要があります。クロスサービスのアクセスにリソースを 1 つだけ関連付けたい場合は、`aws:SourceArn` を使用します。そのアカウント内のリソースをクロスサービスの使用に関連付けることを許可する場合は、`aws:SourceAccount` を使用します。

AWS DMS は 3.4.7 以降の混乱した代理オプションをサポートしています。詳細については、「[AWS Database Migration Service 3.4.7 リリースノート](CHAP_ReleaseNotes.md#CHAP_ReleaseNotes.DMS347)」を参照してください。レプリケーションインスタンスが AWS DMS 3.4.6 以前のバージョンを使用している場合は、混乱した代理オプションを設定する前に必ず最新バージョンにアップグレードしてください。

混乱した代理問題から保護するための最も効果的な方法は、リソースの完全な ARN を指定して、`aws:SourceArn` グローバル条件コンテキストキーを使用することです。リソースの完全な ARN が不明な場合や、複数のリソースを指定する場合には、グローバルコンテキスト条件キー `aws:SourceArn` で、ARN の未知部分を示すためにワイルドカード文字 (`*`) を使用します。例えば、`arn:aws:dms:*:123456789012:rep:*`。

**Topics**
+ [サービス間の混乱した代理防止のために AWS DMS API で使用する IAM ロール](#cross-service-confused-deputy-prevention-dms-api)
+ [サービス間の混乱を防ぐために Amazon S3 にプリフライト評価を保存する IAM ポリシー](#cross-service-confused-deputy-prevention-s3)
+ [サービス間の混乱した代理防止 AWS DMS のための でのターゲットエンドポイントとしての Amazon DynamoDB の使用](#cross-service-confused-deputy-prevention-dynamodb)

## サービス間の混乱した代理防止のために AWS DMS API で使用する IAM ロール
<a name="cross-service-confused-deputy-prevention-dms-api"></a>

データベース移行に AWS CLI または AWS DMS API を使用するには、 の機能を使用する前に `dms-vpc-role`および `dms-cloudwatch-logs-role` IAM ロールを AWS アカウントに追加する必要があります AWS DMS。詳細については、「[で使用する IAM ロールの作成 AWS DMS](security-iam.md#CHAP_Security.APIRole)」を参照してください。

次の例は、`my-replication-instance` レプリケーションインスタンスで `dms-vpc-role` ロールを使用する際のポリシーを示しています。これらのポリシーを使用して、混乱した代理問題を防止します。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
        "Sid": "AllowDMSAssumeRole",
        "Effect": "Allow",
        "Action": "sts:AssumeRole",
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "AWS:SourceAccount": "111122223333"
         },
         "ArnLike": {
             "aws:SourceArn": "arn:aws:dms:*:123456789012:*"
         }
      }
    }
  ]
}
```

------

## サービス間の混乱を防ぐために Amazon S3 にプリフライト評価を保存する IAM ポリシー
<a name="cross-service-confused-deputy-prevention-s3"></a>

事前評価の結果を S3 バケットに保存するには、Amazon S3 のオブジェクトの管理を許可する AWS DMS IAM ポリシーを作成します。詳細については、「[IAM リソースを作成する](CHAP_Tasks.AssessmentReport.Prerequisites.md#CHAP_Tasks.AssessmentReport.Prerequisites.IAM)」を参照してください。

次の例は、指定されたユーザーアカウントですべてのタスクと評価の実行へのアクセス AWS DMS を に許可する IAM ロールに設定されている混乱した代理条件を持つ信頼ポリシーを示しています。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowDMSAssumeRole",
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "AWS:SourceAccount": "111122223333"
        },
        "ArnLike": {
            "aws:SourceArn": [
                "arn:aws:dms:*:123456789012:assessment-run:*",
                "arn:aws:dms:*:123456789012:task:*"
          ]
        }
      }
    }
  ]
}
```

------

## サービス間の混乱した代理防止 AWS DMS のための でのターゲットエンドポイントとしての Amazon DynamoDB の使用
<a name="cross-service-confused-deputy-prevention-dynamodb"></a>

Amazon DynamoDB をデータベース移行のターゲットエンドポイントとして使用するには、 が DynamoDB テーブルを AWS DMS 引き受けてアクセスを許可する IAM ロールを作成する必要があります。その後、 AWS DMSでターゲットの DynamoDB エンドポイントを作成する際に、このロールを使用します。詳細については、「[ターゲットとしての Amazon DynamoDB の使用](CHAP_Target.DynamoDB.md)」を参照してください。

次の例は、すべての AWS DMS エンドポイントが DynamoDB テーブルにアクセスできるようにする IAM ロールに設定されている混乱した代理条件を持つ信頼ポリシーを示しています。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowDMSAssumeRole",
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Resource": "*",
      "Condition": {
      "StringEquals": {
          "AWS:SourceAccount": "111122223333"
        },
        "ArnLike": {
        "aws:SourceArn": [
            "arn:aws:dms:*:123456789012:assessment-run:*",
            "arn:aws:dms:*:123456789012:task:*"
            ]
         }
      }
    }
  ]
}
```

------