AWS Database Migration Service でのセキュリティ - AWS Database Migration Service

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

AWS Database Migration Service でのセキュリティ

AWS では、クラウドのセキュリティが最優先事項です。AWS のお客様は、セキュリティを最も重視する組織の要件を満たすように構築されたデータセンターとネットワークアーキテクチャから利点を得られます。

セキュリティは、AWS とお客様の間の責任共有です。責任共有モデルでは、これをクラウドセキュリティおよびクラウド内のセキュリティとして説明しています。

  • クラウドのセキュリティ - AWS は、AWS クラウドで AWS のサービスを実行するインフラストラクチャを保護する責任を負います。また、AWS は、使用するサービスを安全に提供します。AWS コンプライアンスプログラムの一環として、サードパーティーの監査が定期的にセキュリティの有効性をテストおよび検証しています。AWS DMS に適用されるコンプライアンスプログラムの詳細については、「コンプライアンスプログラム対象範囲内の AWS のサービス」をご参照ください。

  • クラウド内のセキュリティ - お客様の責任は使用する AWS のサービスによって決まります。また、お客様は、お客様のデータの機密性、組織の要件、および適用可能な法律および規制などの他の要因についても責任を担います。

このドキュメントは、AWS DMS を使用して責任共有モデルを適用する方法を理解するのに役立ちます。次のトピックでは、セキュリティおよびコンプライアンスの目的を達成するために AWS DMS を設定する方法を示します。また、AWS DMS リソースのモニタリングや保護に役立つ他の AWS のサービスの使用方法についても説明します。

AWS DMS リソースとデータベース (DB) へのアクセスを管理できます。アクセスの管理に使用する方法は、AWS DMS で実行する必要があるレプリケーションタスクによって異なります。

  • AWS Identity and Access Management (IAM) ポリシーを使用して、どのユーザーに AWS DMS リソースの管理を許可するかを決定するアクセス許可を割り当てます。AWS DMS は、IAM ユーザーとしてサインインしている場合、適切なアクセス許可を前提とします。たとえば、IAM を使用して、DB インスタンスのおよびクラスターの作成、記述、変更、削除と、リソースのタグ付け、セキュリティグループの変更をどのユーザーに許可するかを決定できます。IAM での AWS DMS 使用の詳細については、「AWS Database Migration Service のためのアイデンティティおよびアクセス管理」をご参照ください。

  • AWS DMS では、Transport Layer Security (TLS) を使用したエンドポイント接続に Secure Sockets Layer (SSL) が使用されます。AWS DMS で SSL/TLS を使用する方法については、「AWS Database Migration Service での SSL の使用」をご参照ください。

  • AWS DMS は AWS Key Management Service (AWS KMS) 暗号化キーを使用して、レプリケーション インスタンスで使用されるストレージとエンドポイント接続情報を暗号化します。また、AWS DMS は AWS KMS 暗号化キーを使用して、 Amazon S3および Amazon Redshift のターゲット エンドポイントに関する保存中のターゲット データを保護します。詳細については、「暗号化キーの設定と AWS KMS のアクセス許可の指定」を参照してください。

  • AWS DMS は、可能な限り最大のネットワークアクセスコントロールを実現するために、常に Amazon VPC サービスに基づいてレプリケーション インスタンスを Virtual Private Cloud (VPC) に作成します。DB インスタンスとインスタンス クラスターには、レプリケーション インスタンスと同じ VPC を使用するか、このレベルのアクセス コントロールに一致させるために追加の VPC を使用します。使用するそれぞれの Amazon VPC は、すべてのポートですべてのトラフィックについて VPC からの送信 (egress) がルールで許可されているセキュリティグループに関連付ける必要があります。このアプローチでは、ソースおよびターゲットデータベースエンドポイントで適切な受信が有効になっている限り、レプリケーション インスタンスからそれらのエンドポイントへの通信が許可されます。

    AWS DMS で使用可能なネットワーク設定の詳細については、「レプリケーション インスタンスのためのネットワークのセットアップ」をご参照ください。VPC での DB インスタンスまたはインスタンス クラスターの作成については、AWSドキュメントで Amazon データベースのセキュリティとクラスター管理のドキュメントをご参照ください。AWS DMS でサポートされるネットワーク設定の詳細については、「レプリケーション インスタンスのためのネットワークのセットアップ」をご参照ください。

  • データベース移行ログを表示する場合、適切な Amazon が必要になります。 CloudWatch 使用している IAM ロールのアクセス許可を記録します。AWS DMS のログ作成の詳細については、「Amazon を使用したレプリケーションモニタリングタスク CloudWatch」をご参照ください。

AWS Database Migration Service でのデータ保護

データ暗号化

サポートされている AWS DMS ターゲットエンドポイントのデータリソースの暗号化を有効にできます。AWS DMS では、AWS DMS との接続と、AWS DMS とすべてのソースエンドポイントおよびターゲットエンドポイントとの間の接続も暗号化されます。さらに、この暗号化を有効にするために、AWS DMS およびサポートされているターゲットエンドポイントが使用するキーも管理できます。

保管中の暗号化

AWS DMS では、停止中の暗号化がサポートされており、サポートされている AWS DMS ターゲット エンドポイントにコピーする前に、レプリケートされたデータを Amazon S3 にプッシュするために使用するサーバー側の暗号化モードを指定できます。この暗号化モードは、エンドポイントの追加の接続属性 encryptionMode を設定することで指定できます。この encryptionMode 設定で KMS キー暗号化モードが指定されている場合は、カスタム AWS KMS キーを作成して、次の AWS DMS ターゲット エンドポイントのターゲットデータを暗号化することもできます。

転送中の暗号化

AWS DMS では、転送中の暗号化がサポートされており、レプリケートするデータがソースエンドポイントからターゲットエンドポイントへの安全な移動が確保されます。この措置には、レプリケーションパイプラインを経由してデータが移動するときに、レプリケーションタスクが中間ストレージ用に使用するレプリケーション インスタンスの S3 バケットの暗号化も含まれます。AWS DMS では、ソースエンドポイントおよびターゲットエンドポイントへのタスク接続を暗号化するために、Secure Socket Layer (SSL) と共に Transport Layer Security (TLS) が使用されます。AWS DMS では、両方のエンドポイントへの接続を暗号化することで、ソースエンドポイントからレプリケーションタスクと、タスクからターゲットエンドポイントへの移動時に、データの安全性が確保されます。AWS DMS で SSL/TLS を使用する方法については、AWS Database Migration Service での SSL の使用をご参照ください

AWS DMS では、デフォルトキーとカスタムキーの両方をサポートし、中間レプリケーションストレージと接続情報の両方が暗号化されます。これらのキーは、AWS KMS を使用して管理します。詳細については、「暗号化キーの設定と AWS KMS のアクセス許可の指定」を参照してください。

キーの管理

AWS DMS では、レプリケーションストレージ、接続情報、および特定のターゲットエンドポイントのターゲットデータストレージを暗号化するために、デフォルトキーまたはカスタムキーの使用がサポートされます。これらのキーは、AWS KMS を使用して管理します。詳細については、「暗号化キーの設定と AWS KMS のアクセス許可の指定」を参照してください。

インターネットトラフィックのプライバシー

オンプレミスで実行されている場合でも、クラウド内の AWS サービスの一部として実行されている場合でも、AWS DMS と、同じ AWS リージョン内のソースエンドポイントおよびターゲットエンドポイントとの間では、保護された接続が提供されます。(ソースとターゲットのうち、少なくとも一方のエンドポイントは、クラウド内で AWS サービスの一部として実行するされている必要があります。) VPC がすべて同じ AWS リージョンにあれば、これらのコンポーネントが同じ Virtual Private Cloud (VPC) を共有している場合も、別々の VPC に存在する場合も、この保護が適用されます。AWS DMS でサポートされるネットワーク設定の詳細については、「レプリケーション インスタンスのためのネットワークのセットアップ」をご参照ください。これらのネットワーク設定を使用する場合のセキュリティに関する考慮事項については、「AWS Database Migration Service のネットワークセキュリティ」をご参照ください。

AWS Database Migration Service のためのアイデンティティおよびアクセス管理

AWS Identity and Access Management (IAM) は、管理者が AWS リソースへのアクセスを安全に制御するために役立つ AWS のサービス です。IAM 管理者は、誰を認証 (サインイン) し、誰に AWS DMS リソースの使用を許可する (アクセス許可を持たせる) かを制御します。IAM は、無料で使用できる AWS のサービスです。

対象者

AWS Identity and Access Management (IAM) の用途は、AWS DMS で行う作業によって異なります。

サービスユーザー - AWS DMS サービスを使用してジョブを実行する場合は、必要なアクセス許可と認証情報を管理者が用意します。作業を実行するためにさらに多くの AWS DMS 機能を使用するとき、追加のアクセス許可が必要になる場合があります。アクセスの管理方法を理解すると、管理者から適切な許可をリクエストするのに役に立ちます。AWS DMS の特徴にアクセスできない場合は、「AWS Database Migration Service アイデンティティとアクセスに関するトラブルシューティング」を参照してください。

サービス管理者 - 社内の AWS DMS リソースを担当している場合は、通常、AWS DMS へのフルアクセスがあります。サービスのユーザーがどの AWS DMS 機能やリソースにアクセスするかを決めるのは管理者の仕事です。その後、IAM 管理者にリクエストを送信して、サービスユーザーの許可を変更する必要があります。このページの情報を確認して、IAM の基本概念を理解してください。お客様の会社で AWS DMS で IAM を利用する方法の詳細については、AWS Database Migration Service と IAM の連携について をご参照ください。

IAM 管理者 - 管理者は、AWS DMS へのアクセスを管理するポリシーの作成方法の詳細について確認する場合があります。IAM で使用できる AWS DMS アイデンティティベースのポリシーの例を表示するには、AWS Database Migration Service アイデンティティベースポリシーの例 を参照してください。

アイデンティティを使用した認証

認証とは、アイデンティティ認証情報を使用して AWS にサインインする方法です。AWS Management Console を使用したサインインの詳細については、「IAM ユーザーガイド」の「IAM ユーザーまたはルートユーザーとして AWS Management Console にサインインする」を参照してください。

ユーザーは AWS のルートユーザーもしくは IAM ユーザーとして、または IAM ロールを引き受けることによって、認証を受ける (AWS アカウント にサインインする) 必要があります。会社のシングルサインオン認証を使用したり、Google や Facebook を使用したりしてサインインすることもできます。このような場合、管理者が事前に IAM ロールを使用して ID フェデレーションを設定している必要があります。他の会社の認証情報を使用して AWS にアクセスした場合、ロールは間接的に割り当てられています。

AWS Management Console に直接サインインするには、パスワードとルートユーザーの E メールまたは IAM ユーザー名を使用します。ルートユーザーまたは IAM ユーザーのアクセスキーを使用して AWS にプログラムからアクセスできます。AWS では、ユーザーの認証情報を使用してリクエストに暗号的に署名するための SDK とコマンドラインツールが提供されます。AWS ツールを使用しない場合は、リクエストに自分で署名する必要があります。これには、インバウンド API リクエストを認証するためのプロトコルである署名バージョン 4 を使用します。リクエストの認証の詳細については、「AWS 全般のリファレンス」の「署名バージョン 4 の署名プロセス」を参照してください。

使用する認証方法を問わず、追加のセキュリティ情報の提供を要求される場合もあります。例えば、AWS は、アカウントのセキュリティを強化するために多要素認証 (MFA) を使用することをお勧めします。詳細については、「IAM ユーザーガイド」の「AWS での多要素認証 (MFA) の使用」を参照してください。

AWS アカウント ルートユーザー

AWS アカウント を作成する場合は、このアカウントのすべての AWS のサービス とリソースに対して完全なアクセス権を持つ 1 つのサインインアイデンティティから始めます。この ID は AWS アカウント ルートユーザーと呼ばれ、アカウントの作成に使用した E メールアドレスとパスワードでサインインすることによってアクセスできます。日常的なタスクには、ルートユーザーを使用しないことを強くお勧めします。ルートユーザーの認証情報を保護し、それらを使用してルートユーザーのみが実行できるタスクを実行します。ルートユーザーとしてサインインする必要があるタスクの完全なリストについては、AWS 全般のリファレンスの「ルートユーザー認証情報が必要なタスク」を参照してください。

IAM ユーザーとグループ

IAM ユーザーは、1 人のユーザーまたは 1 つのアプリケーションに対して特定の許可を持つ AWS アカウント 内のアイデンティティです。可能であれば、パスワードやアクセスキーなどの長期的な認証情報を持つ IAM ユーザーを作成する代わりに、一時的な認証情報を使用することをお勧めします。ただし、IAM ユーザーとの長期的な認証情報が必要な特定のユースケースがある場合は、アクセスキーをローテーションすることをお勧めします。詳細については、次を参照してください。長期的な認証情報を必要とするユースケースのためにアクセスキーを定期的にローテーションする()IAM ユーザーガイド

IAM グループは、IAM ユーザーの集団を指定するアイデンティティです。グループとしてサインインすることはできません。グループを使用して、複数のユーザーに対して一度に許可を指定できます。多数のユーザーグループがある場合、グループを使用することで許可の管理が容易になります。例えば、IAMAdmins という名前のグループを設定して、そのグループに IAM リソースを管理する許可を与えることができます。

ユーザーは、ロールとは異なります。ユーザーは 1 人の人または 1 つのアプリケーションに一意に関連付けられますが、ロールはそれを必要とする任意の人が引き受けるようになっています。ユーザーには永続的な長期の認証情報がありますが、ロールでは一時的な認証情報が提供されます。詳細については、「IAM ユーザーガイド」の「IAM ユーザー (ロールではなく) の作成が適している場合」を参照してください。

IAM ロール

IAM ロールは、特定の許可を持つ、AWS アカウント 内のアイデンティティです。これは IAM ユーザーに似ていますが、特定のユーザーには関連付けられていません。ロールを切り替えることによって、AWS Management Console で IAM ロールを一時的に引き受けることができます。ロールを引き受けるには、AWS CLI または AWS API オペレーションを呼び出すか、カスタム URL を使用します。ロールを使用する方法の詳細については、「IAM ユーザーガイド」の「IAM ロールの使用」を参照してください。

IAM ロールと一時的な認証情報は、次の状況で役立ちます。

  • フェデレーティッドユーザーアクセス-フェデレーティッドアイデンティティにアクセス許可を割り当てるには、ロールを作成し、ロールのアクセス許可を定義します。フェデレーティッドアイデンティティが認証されると、ID はロールに関連付けられ、ロールで定義されているアクセス許可が付与されます。フェデレーションのロールについては、以下を参照してください。サードパーティー ID プロバイダーのロールの作成()IAM ユーザーガイド

    IAM アイデンティティセンターを使用する場合、許可セットを設定します。認証後に ID が何にアクセスできるかを制御するために、IAM Identity Center は権限セットを IAM のロールに関連付けます。アクセス許可セットの詳細については、アクセス権限セット()AWS IAM Identity Center (successor to AWS Single Sign-On)ユーザーガイド

  • 一時的な IAM ユーザー許可-IAM ユーザーまたはロールは、特定のタスクに対して複数の異なるアクセス許可を一時的に IAM ロールで引き受けることができます。

  • クロスアカウントアクセス - IAM ロールを使用して、自分のアカウントのリソースにアクセスすることを、別のアカウントの人物 (信頼済みプリンシパル) に許可できます。クロスアカウントアクセスを許可する主な方法は、ロールを使用することです。ただし、一部の AWS のサービス では、(ロールをプロキシとして使用する代わりに) リソースにポリシーを直接添付できます。クロスアカウントアクセスにおけるロールとリソースベースのポリシーの違いについては、「IAM ユーザーガイド」の「IAM ロールとリソースベースのポリシーとの相違点」を参照してください。

  • クロスサービスアクセス - 一部の AWS のサービス では、他の AWS のサービス の機能を使用します。例えば、サービスで呼び出しを行うと、通常そのサービスによって Amazon EC2 でアプリケーションが実行されたり、Amazon S3 にオブジェクトが保存されたりします。サービスでは、呼び出し元プリンシパルの許可、サービスロール、またはサービスにリンクされたロールを使用してこれを行う場合があります。

    • プリンシパル許可 - IAM ユーザーまたはロールを使用して AWS でアクションを実行する場合、そのユーザーはプリンシパルとみなされます。ポリシーによって、プリンシパルに許可が付与されます。一部のサービスを使用する際に、アクションを実行することで、別のサービスの別のアクションがトリガーされることがあります。この場合、両方のアクションを実行するための許可が必要です。アクションがポリシーで追加の依存アクションを必要とするかどうかを確認するには、サービス認証リファレンスの「AWS Database Migration Service のアクション、リソース、および条件キー」をご参照ください。

    • サービスロール - サービスがユーザーに代わってアクションを実行するために引き受ける IAM ロールです。IAM 管理者は、IAM 内からサービスロールを作成、変更、削除できます。詳細については、「IAM ユーザーガイド」の「AWS のサービス にアクセス許可を委任するロールの作成」を参照してください。

    • サービスにリンクされたロール - サービスにリンクされたロールは、AWS のサービス にリンクされたサービスロールの一種です。サービスは、ユーザーに代わってアクションを実行するロールを引き受けることができます。サービスにリンクされたロールは IAM アカウント内に表示され、サービスによって所有されます。IAM 管理者は、サービスにリンクされたロールの許可を表示できますが、編集することはできません。

  • Amazon EC2 で実行されているアプリケーション - EC2 インスタンスで実行され、AWS CLI または AWS API 要求を行っているアプリケーションの一時的な認証情報を管理するには、IAM ロールを使用できます。これは、EC2 インスタンス内でのアクセスキーの保存に推奨されます。AWS ロールを EC2 インスタンスに割り当て、そのすべてのアプリケーションで使用できるようにするには、インスタンスにアタッチされたインスタンスプロファイルを作成します。インスタンスプロファイルにはロールが含まれ、EC2 インスタンスで実行されるプログラムは一時的な認証情報を取得することができます。詳細については、「IAM ユーザーガイド」の「Amazon EC2 インスタンスで実行されるアプリケーションに IAM ロールを使用して許可を付与する」を参照してください。

IAM ロールと IAM ユーザーのどちらを使用するかについては、「IAM ユーザーガイド」の「(IAM ユーザーではなく) IAM ロールをいつ作成したら良いのか?」を参照してください。

ポリシーを使用したアクセスの管理

AWS でアクセスをコントロールするには、ポリシーを作成して AWS アイデンティティまたはリソースにアタッチします。ポリシーは AWS のオブジェクトであり、アイデンティティやリソースに関連付けて、これらのアクセス許可を定義します。AWS は、プリンシパル (ユーザー、ルートユーザー、またはロールセッション) がリクエストを行うと、これらのポリシーを評価します。ポリシーでの許可により、リクエストが許可されるか拒否されるかが決まります。大半のポリシーは JSON ドキュメントとして AWS に保存されます。JSON ポリシードキュメントの構造と内容の詳細については、「IAM ユーザーガイド」の「JSON ポリシー概要」を参照してください。

管理者は AWS JSON ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どのプリンシパルがどのリソースに対してどのような条件下でアクションを実行できるかということです。

すべての IAM エンティティ (ユーザーまたはロール) は、許可のない状態からスタートします。デフォルトでは、ユーザーは何もできず、自分のパスワードを変更することすらできません。何かを実行する許可をユーザーに付与するには、管理者がユーザーに許可ポリシーを添付する必要があります。また、管理者は、必要な許可があるグループにユーザーを追加できます。管理者がグループに許可を付与すると、そのグループ内のすべてのユーザーにこれらの許可が付与されます。

IAM ポリシーは、オペレーションの実行方法を問わず、アクションの許可を定義します。例えば、iam:GetRole アクションを許可するポリシーがあるとします。このポリシーがあるユーザーは、AWS Management Console、AWS CLI、または AWS API からロールの情報を取得できます。

アイデンティティベースのポリシー

アイデンティティベースポリシーは、IAM ユーザー、ユーザーのグループ、ロールなど、アイデンティティに添付できる JSON 許可ポリシードキュメントです。これらのポリシーは、ユーザーとロールが実行できるアクション、リソース、および条件を制御します。アイデンティティベースのポリシーを作成する方法については、「IAM ユーザーガイド」の「IAM ポリシーの作成」を参照してください。

アイデンティティベースのポリシーは、さらにインラインポリシーまたはマネージドポリシーに分類できます。インラインポリシーは、単一のユーザー、グループ、またはロールに直接埋め込まれます。マネージドポリシーは、AWS アカウント 内の複数のユーザー、グループ、およびロールに添付できるスタンドアロンポリシーです。マネージドポリシーには、AWS マネージドポリシーとカスタマーマネージドポリシーがあります。マネージドポリシーまたはインラインポリシーのいずれかを選択する方法については、「IAM ユーザーガイド」の「マネージドポリシーとインラインポリシーの比較」を参照してください。

リソースベースのポリシー

リソースベースのポリシーは、リソースに添付する JSON ポリシードキュメントです。リソースベースのポリシーには例として、IAM ロールの信頼ポリシーや Amazon S3 バケットポリシーがあげられます。リソースベースのポリシーをサポートするサービスでは、サービス管理者はポリシーを使用して特定のリソースへのアクセスを制御できます。ポリシーが添付されているリソースの場合、指定されたプリンシパルがそのリソースに対して実行できるアクションと条件は、ポリシーによって定義されます。リソースベースのポリシーで、プリンシパルを指定する必要があります。プリンシパルには、アカウント、ユーザー、ロール、フェデレーティッドユーザー、または AWS のサービス を含めることができます。

リソースベースのポリシーは、そのサービス内にあるインラインポリシーです。リソースベースのポリシーでは IAM の AWS マネージドポリシーは使用できません。

アクセスコントロールリスト (ACL)

アクセスコントロールリスト (ACL) は、どのプリンシパル (アカウントメンバー、ユーザー、またはロール) がリソースにアクセスするための許可を持つかをコントロールします。ACL はリソースベースのポリシーに似ていますが、JSON ポリシードキュメント形式は使用しません。

Simple Storage Service (Amazon S3)、AWS WAF、および Amazon VPC は、ACL をサポートするサービスの例です。ACL の詳細については、「Amazon Simple Storage Service デベロッパーガイド」の「アクセスコントロールリスト (ACL) の概要」を参照してください。

その他のポリシータイプ

AWS では、その他の一般的ではないポリシータイプもサポートしています。これらのポリシータイプでは、より一般的なポリシータイプで付与された最大の許可を設定できます。

  • 許可の境界 - 許可の境界は、アイデンティティベースのポリシーによって IAM エンティティ (IAM ユーザーまたはロール) に付与できる許可の上限を設定する高度な機能です。エンティティに許可の境界を設定できます。結果として許可される範囲は、エンティティのアイデンティティベースポリシーとその許可の境界の共通部分になります。Principal フィールドでユーザーまたはロールを指定するリソースベースのポリシーでは、許可の境界は制限されません。これらのポリシーのいずれかを明示的に拒否した場合、許可は無効になります。許可の境界の詳細については、「IAM ユーザーガイド」の「IAM エンティティの許可の境界」を参照してください。

  • サービスコントロールポリシー (SCP) - SCP は、AWS Organizations で組織や組織単位 (OU) の最大許可を指定する JSON ポリシーです。AWS Organizations は、お客様のビジネスが所有する複数の AWS アカウント をグループ化し、一元的に管理するサービスです。組織内のすべての機能を有効にすると、サービスコントロールポリシー (SCP) を一部またはすべてのアカウントに適用できます。SCP ではメンバーアカウントのエンティティ (各 AWS アカウント ルートユーザーなど) に対する許可が制限されます。Organizations と SCP の詳細については、AWS Organizations ユーザーガイドの「SCP の仕組み」を参照してください。

  • セッションポリシー - セッションポリシーは、ロールまたはフェデレーティッドユーザーの一時的なセッションをプログラムで作成する際にパラメータとして渡す高度なポリシーです。結果としてセッションの許可される範囲は、ユーザーまたはロールのアイデンティティベースポリシーとセッションポリシーの共通部分になります。また、リソースベースのポリシーから許可が派生する場合もあります。これらのポリシーのいずれかを明示的に拒否した場合、許可は無効になります。詳細については、IAM ユーザーガイドの「セッションポリシー」を参照してください。

複数のポリシータイプ

1 つのリクエストに複数のタイプのポリシーが適用されると、結果として作成される許可を理解するのがさらに難しくなります。複数のポリシータイプが関連するとき、リクエストを許可するかどうかを AWS が決定する方法の詳細については、「IAM ユーザーガイド」の「ポリシーの評価ロジック」を参照してください。

AWS Database Migration Service と IAM の連携について

AWS DMS へのアクセスを管理するために IAM を使用する前に、AWS DMS でどの IAM特徴が使用できるかを理解しておく必要があります。AWS DMS およびその他の AWS のサービスが IAM と連携する方法の概要を把握するには、IAM ユーザーガイドの「IAM と連携する AWS のサービス」 をご参照ください。

AWS DMS アイデンティティベースのポリシー

IAM アイデンティティベースのポリシーでは、許可または拒否されたアクションとリソースを指定でき、さらにアクションが許可または拒否された条件を指定できます。AWS DMS は、特定のアクション、リソース、および条件キーをサポートします。JSON ポリシーで使用するすべての要素については、IAM ユーザーガイドのIAM JSON ポリシーエレメントのリファレンスを参照してください。

アクション

管理者は AWS JSON ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どの プリンシパル がどの リソース に対してどのような 条件 下で アクション を実行できるかということです。

JSON ポリシーの Action 要素には、ポリシー内のアクセスを許可または拒否するために使用できるアクションが記述されます。ポリシーアクションの名前は通常、関連する AWS API オペレーションと同じです。一致する API オペレーションのない許可のみのアクションなど、いくつかの例外があります。また、ポリシーに複数のアクションが必要なオペレーションもあります。これらの追加アクションは、依存アクションと呼ばれます。

このアクションは、関連付けられたオペレーションを実行するための許可を付与するポリシーで使用されます。

AWS DMS のポリシーアクションは、アクションの前に以下のプレフィックス を使用します。dms:。 たとえば、でレプリケーションタスクを作成するアクセス許可を付与するにはAWS DMS CreateReplicationTaskAPI オペレーション。含めるのはdms:CreateReplicationTask彼らの方針における行動。ポリシーステートメントには、Action 要素または NotAction 要素のいずれかを含める必要があります。 AWS DMS は、このサービスで実行できるタスクを説明する独自の一連のアクションを定義します。

単一のステートメントに複数のアクションを指定するには、次のようにコンマで区切ります。

"Action": [ "dms:action1", "dms:action2"

ワイルドカード (*) を使用して複数のアクションを指定することができます。たとえば、Describe という単語で始まるすべてのアクションを指定するには、以下のアクションを含めます。

"Action": "dms:Describe*"

AWS DMS アクションのリストを表示するには、IAM ユーザーガイドの「AWS Database Migration Service によって定義されたアクション」をご参照ください。

リソース

管理者は AWS JSON ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どのプリンシパルがどのリソースに対してどのような条件下でアクションを実行できるかということです。

Resource JSON ポリシー要素は、オブジェクトあるいはアクションが適用されるオブジェクトを指定します。ステートメントには、Resource または NotResource 要素を含める必要があります。ベストプラクティスとして、Amazon リソースネーム (ARN) を使用してリソースを指定します。これは、リソースレベルの許可と呼ばれる特定のリソースタイプをサポートするアクションに対して実行できます。

オペレーションのリスト化など、リソースレベルの許可をサポートしないアクションの場合は、ステートメントがすべてのリソースに適用されることを示すために、ワイルドカード (*) を使用します。

"Resource": "*"

AWS DMS は、次のリソースと連携して動作します:

  • 証明書

  • エンドポイント

  • イベントサブスクリプション

  • レプリケーション インスタンス

  • レプリケーションサブネット(セキュリティ)グループ

  • レプリケーションタスク

AWS DMS が必要とするリソースは、呼び出された 1 つまたは複数のアクションによって決まります。関連付けられているリソースや、リソース ARN で指定されたリソースに対して、これらのアクションを許可するポリシーが必要です。

たとえば、AWS DMS エンドポイントリソースの ARN は次のようになります:

arn:${Partition}:dms:${Region}:${Account}:endpoint/${InstanceId}

ARN の形式の詳細については、「Amazon リソースネーム (ARN) と AWS のサービスの名前空間」をご参照ください。

たとえば、ステートメントで use-east-2 リージョンの 1A2B3C4D5E6F7G8H9I0J1K2L3M エンドポイントインスタンスを指定するには、次の ARN を使用します。

"Resource": "arn:aws:dms:us-east-2:987654321098:endpoint/1A2B3C4D5E6F7G8H9I0J1K2L3M"

特定のアカウントに属するすべてのエンドポイントを指定するには、ワイルドカード (*) を使用します。

"Resource": "arn:aws:dms:us-east-2:987654321098:endpoint/*"

リソースを作成するためのアクションなど、一部の AWS DMS アクションは、特定のリソースでは実行できません。このような場合は、ワイルドカード (*) を使用する必要があります。

"Resource": "*"

一部の AWS DMS API アクションには、複数のリソースが関連します。たとえば、StartReplicationTask はレプリケーション タスクを開始し、ソースとターゲットの 2 つのデータベース エンドポイント リソースに接続するため、 ユーザーには、ソース エンドポイントを読み取るアクセス許可とターゲット エンドポイントに書き込むアクセス許可が必要です。複数のリソースを単一のステートメントで指定するには、ARN をカンマで区切ります。

"Resource": [ "resource1", "resource2" ]

ポリシーを使用して AWS DMS リソースへのアクセスを制御する方法については、「リソース名を使用したアクセスの制御」をご参照ください。AWS DMS リソースタイプとその ARN のリストを表示するには、IAM ユーザーガイドの「AWS Database Migration Service で定義されるリソース」をご参照ください。どのアクションで各リソースの ARN を指定できるかについては、AWS Database Migration Service で定義されるアクションを参照してください。

条件キー

管理者は AWS JSON ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どのプリンシパルがどのリソースに対してどのような条件下でアクションを実行できるかということです。

Condition 要素 (または Condition ブロック) を使用すると、ステートメントが有効な条件を指定できます。Condition 要素はオプションです。イコールや未満などの条件演算子を使用して条件式を作成することで、ポリシーの条件とリクエスト内の値を一致させることができます。

1 つのステートメントに複数の Condition 要素を指定する場合、または 1 つの Condition 要素に複数のキーを指定する場合、AWS では AND 論理演算子を使用してそれらを評価します。単一の条件キーに複数の値を指定する場合、AWS では OR 論理演算子を使用して条件を評価します。ステートメントの許可が付与される前にすべての条件が満たされる必要があります。

条件を指定する際にプレースホルダー変数も使用できます。例えば IAM ユーザーに、IAM ユーザー名がタグ付けされている場合のみリソースにアクセスできる許可を付与することができます。詳細については、IAM ユーザーガイドの「IAM ポリシーの要素: 変数およびタグ」を参照してください。

AWS はグローバル条件キーとサービス固有の条件キーをサポートしています。すべての AWS グローバル条件キーを確認するには、IAM ユーザーガイドの「AWS グローバル条件コンテキストキー」をご参照ください。

AWS DMS は独自の条件キーを定義し、一部のグローバル条件キーの使用をサポートしています。すべての AWS グローバル条件キーを確認するには、IAM ユーザーガイドの「AWS グローバル条件コンテキストキー」をご参照ください。

AWS DMS では、条件キーで使用できる標準タグのセットが定義されています。独自のカスタムタグを定義することもできます。詳細については、「タグを使用したアクセスへのコントロール」を参照してください。

AWS DMS 条件キーのリストを確認するには、IAM ユーザーガイドの「AWS Database Migration Service の条件キー」をご参照ください。どのアクションおよびリソースと条件キーを使用できるかについては、アクションの定義者AWS Database Migration Serviceそしてで定義したリソースAWS Database Migration Service

AWS DMS アイデンティティベースのポリシーの例を表示するには、AWS Database Migration Service アイデンティティベースポリシーの例を参照してください。

AWS DMS リソースベースのポリシー

リソースベースのポリシーは、指定されたプリンシパルによって指定の AWS DMS リソースに対して実行できるアクションおよび実行条件を指定する JSON ポリシードキュメントです。AWS DMS では、サポートされているターゲットエンドポイントに移行されるデータを暗号化するために作成した AWS KMS 暗号化キーに関するリソースベースのアクセス許可ポリシーがサポートされます。サポートされているターゲットエンドポイントには Amazon Redshift や Amazon S3 があります。リソースベースのポリシーを使用することで、これらの暗号化キーを使用するためのアクセス許可を、各ターゲットエンドポイントの他のアカウントに付与できます。

クロスアカウントアクセスを有効にするには、アカウント全体、または別のアカウントの IAM エンティティをリソースベースのポリシーのプリンシパルとして指定します。リソースベースのポリシーにクロスアカウントのプリンシパルを追加しても、信頼関係は半分しか確立されない点に注意してください。プリンシパルとリソースが異なる AWS アカウントにある場合は、リソースにアクセスするためのアクセス許可をプリンシパルエンティティにも付与する必要があります。アクセス許可は、アイデンティティベースのポリシーをエンティティにアタッチすることで付与します。ただし、リソースベースのポリシーで、同じアカウントのプリンシパルへのアクセス権が付与されている場合は、ID ベースのポリシーをさらに付与する必要はありません。詳細については、IAM ユーザーガイドの「IAM ロールとリソースベースのポリシーとの相違点」をご参照ください。

AWS DMS サービスでは、キーポリシーと呼ばれるリソースベースのポリシーを 1 種類のみサポートしており、これが AWS KMS 暗号化キーにアタッチされています。このポリシーでは、サポートされているターゲットエンドポイントで移行されたデータを暗号化できるプリンシパルエンティティ(アカウント、ユーザー、ロール、フェデレーティッドユーザー)を定義します。

サポートされているターゲットエンドポイント用に作成する暗号化キーにリソースベースのポリシーをアタッチする方法については、「Amazon Redshift ターゲットデータを暗号化する AWS KMS キーの作成と使用」および「Amazon S3 ターゲットオブジェクトを暗号化する AWS KMS キーの作成」をご参照ください。

AWS DMS のリソースベースのポリシーの例については、「リソースベースのポリシーの例 (AWS KMS)」をご参照ください。

AWS DMS タグに基づく認可

タグを AWS DMS リソースに添付することも、AWS DMS へのリクエストでタグを渡すこともできます。タグに基づいてアクセスを制御するには、dms:ResourceTag/key-nameaws:RequestTag/key-name、または aws:TagKeys 条件キーを使用したポリシーの条件エレメントにタグ情報を入力します。AWS DMS では、条件キーで使用できる一連のスタンダードタグが定義されており、独自のカスタムタグを定義することもできます。詳細については、「タグを使用したアクセスへのコントロール」を参照してください。

タグに基づいてリソースへのアクセスを制限するアイデンティティベースのポリシーの例については、「タグに基づく AWS DMS リソースへのアクセス」をご参照ください。

AWS DMS の IAM ロール

IAM ロールは AWS アカウント内のエンティティで、特定の許可を持っています。

AWS DMS でのテンポラリ認証情報の使用

一時的な認証情報を使用して、フェデレーションでサインインする、IAM ロールを引き受ける、またはクロスアカウントロールを引き受けることができます。で一時的なセキュリティ認証情報を取得しますAWS STSのような API オペレーションAssumeRoleまたはGetFederationToken

AWS DMS では、一時認証情報の使用をサポートしています。

サービスにリンクされたロール

サービスにリンクされたロールは、AWS サービスが他のサービスのリソースにアクセスして自動的にアクションを完了することを許可します。サービスにリンクされたロールは IAM アカウント内に表示され、サービスによって所有されます。IAM 管理者は、サービスにリンクされたロールの許可を表示できますが、編集することはできません。

AWS DMS ではサービスにリンクされたロールをサポートしていません。

サービスロール

この機能により、ユーザーに代わってサービスがサービスロールを引き受けることが許可されます。このロールにより、サービスがユーザーに代わって他のサービスのリソースにアクセスし、アクションを完了することが許可されます。サービスロールは、IAM アカウントに表示され、アカウントによって所有されます。つまり、IAM 管理者が、このロールの許可を変更することができます。ただし、これを行うことにより、サービスの機能が損なわれる場合があります。

AWS DMS では、特定のソースエンドポイントまたはターゲットエンドポイントを使用するために作成する必要がある 2 種類のサービスロールがサポートされています:

AWS DMS で IAM ロールを選択

AWS CLI または AWS DMS API をデータベース移行に使用する場合、AWS DMS の機能を使用する前に特定の IAM ロールを AWS アカウントに追加する必要があります。これらのロールのうち 2 つは dms-vpc-roledms-cloudwatch-logs-role です。Amazon Redshift をターゲットデータベースとして使用している場合、IAM ロール dms-access-for-endpoint も AWS アカウントに追加する必要があります。詳細については、「AWS CLI と AWS DMS API で使用する IAM ロールの作成」を参照してください。

AWS Database Migration Service アイデンティティベースポリシーの例

デフォルトでは、IAM ユーザーおよびロールには、AWS DMS リソースを作成または変更するアクセス許可はありません。また、AWS Management Console や AWS CLI、AWS API を使用してタスクを実行することもできません。IAM 管理者は、ユーザーとロールに必要な、指定されたリソースで特定の API オペレーションを実行する許可をユーザーとロールに付与する IAM ポリシーを作成する必要があります。続いて、管理者はそれらの許可が必要な IAM ユーザーまたはグループにそのポリシーを添付します。

これらの JSON ポリシードキュメント例を使用して IAM のアイデンティティベースのポリシーを作成する方法については、IAM ユーザーガイドの「JSON タブでのポリシーの作成」を参照してください。

ポリシーのベストプラクティス

ID ベースのポリシーは、ユーザーのアカウントで誰かが AWS DMS リソースを作成、アクセス、または削除できるどうかを決定します。これらのアクションを実行すると、AWS アカウント に追加料金が発生する可能性があります。アイデンティティベースポリシーを作成したり編集したりする際には、以下のガイドラインと推奨事項に従ってください。

  • AWS マネージドポリシーを使用して開始し、最小特権の許可に移行する – ユーザーとワークロードへの許可の付与を開始するには、多くの一般的なユースケースのために許可を付与する AWS マネージドポリシーを使用します。これらは AWS アカウント で使用できます。ユースケースに応じた AWS カスタマーマネージドポリシーを定義することで、許可をさらに減らすことをお勧めします。詳細については、「IAM ユーザーガイド」の「AWS マネージドポリシー」または「AWS ジョブ機能の管理ポリシー」を参照してください。

  • 最小特権を適用する – IAM ポリシーで許可を設定するときは、タスクの実行に必要な許可のみを付与します。これを行うには、特定の条件下で特定のリソースに対して実行できるアクションを定義します。これは、最小特権アクセス許可とも呼ばれています。IAM を使用して許可を適用する方法の詳細については、「IAM ユーザーガイド」の「IAM でのポリシーとアクセス許可」を参照してください。

  • IAM ポリシーで条件を使用してアクセスをさらに制限する – ポリシーに条件を追加して、アクションやリソースへのアクセスを制限できます。例えば、ポリシー条件を記述して、すべてのリクエストを SSL を使用して送信するように指定することができます。また、AWS のサービス などの特定の AWS CloudFormation を介して使用する場合、条件を使用してサービスアクションへのアクセスを許可することもできます。詳細については、次を参照してください。IAM JSON ポリシー要素: Condition()IAM ユーザーガイド

  • IAM Access Analyzer を使用して IAM ポリシーを検証し、安全で機能的な許可を確保する - IAM Access Analyzer は、新規および既存のポリシーを検証して、ポリシーが IAM ポリシー言語 (JSON) および IAM のベストプラクティスに準拠するようにします。IAM Access Analyzer は 100 を超えるポリシーチェックと実用的な推奨事項を提供し、安全で機能的なポリシーを作成できるようサポートします。詳細については、「IAM ユーザーガイド」の「IAM Access Analyzer ポリシーの検証」を参照してください。

  • 多要素認証 (MFA) を要求する – アカウントで IAM ユーザーまたはルートユーザーを要求するシナリオがある場合は、セキュリティを強化するために MFA をオンにします。API オペレーションが呼び出されるときに MFA を必須にするには、ポリシーに MFA 条件を追加します。詳細については、「IAM ユーザーガイド」の「MFA 保護 API アクセスの設定」を参照してください。

IAM でのベストプラクティスの詳細については、「IAM ユーザーガイド」の「IAM でのセキュリティのベストプラクティス」を参照してください。

AWS DMS コンソールを使用する

次のポリシーでは、AWS DMS コンソールを含めて AWS DMS へのアクセスを許可し、Amazon EC2 などその他の Amazon サービスから特定の必要なアクションに関するアクセス許可も指定しています。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "dms:*", "Resource": "arn:aws:dms:region:account:resourcetype/id" }, { "Effect": "Allow", "Action": [ "kms:ListAliases", "kms:DescribeKey" ], "Resource": "arn:aws:service:region:account:resourcetype/id" }, { "Effect": "Allow", "Action": [ "iam:GetRole", "iam:PassRole", "iam:CreateRole", "iam:AttachRolePolicy" ], "Resource": "arn:aws:service:region:account:resourcetype/id" }, { "Effect": "Allow", "Action": [ "ec2:DescribeVpcs", "ec2:DescribeInternetGateways", "ec2:DescribeAvailabilityZones", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:ModifyNetworkInterfaceAttribute", "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterface" ], "Resource": "arn:aws:service:region:account:resourcetype/id" }, { "Effect": "Allow", "Action": [ "cloudwatch:Get*", "cloudwatch:List*" ], "Resource": "arn:aws:service:region:account:resourcetype/id" }, { "Effect": "Allow", "Action": [ "logs:DescribeLogGroups", "logs:DescribeLogStreams", "logs:FilterLogEvents", "logs:GetLogEvents" ], "Resource": "arn:aws:service:region:account:resourcetype/id" }, { "Effect": "Allow", "Action": [ "redshift:Describe*", "redshift:ModifyClusterIamRoles" ], "Resource": "arn:aws:dms:region:account:resourcetype/id" } ] }

これらのアクセス許可の内訳は、コンソールを使用するためにそれぞれのアクセス許可が必要な理由を理解するうえで役立ちます。

次のセクションは、利用可能な AWS KMS キーとエイリアスをユーザーがリストし、コンソールに表示することを許可するために必要です。KMS キーの Amazon リソースネーム (ARN) がわかり、AWS Command Line Interface (AWS CLI) のみを使用している場合、このエントリは必要ではありません。

{ "Effect": "Allow", "Action": [ "kms:ListAliases", "kms:DescribeKey" ], "Resource": "arn:aws:service:region:account:resourcetype/id" }

次のセクションは、エンドポイントとともにロール ARN を渡す必要がある特定のエンドポイントタイプに必要です。さらに、必要な AWS DMS ロールが事前に作成されていない場合、AWS DMS コンソールはそのロールを作成することができます。すべてのロールが事前に設定されている場合、必要なものは iam:GetRole および iam:PassRole のみです。ロールの詳細については、「AWS CLI と AWS DMS API で使用する IAM ロールの作成」をご参照ください。

{ "Effect": "Allow", "Action": [ "iam:GetRole", "iam:PassRole", "iam:CreateRole", "iam:AttachRolePolicy" ], "Resource": "arn:aws:service:region:account:resourcetype/id" }

AWS DMS には Amazon EC2 インスタンスを作成し、作成されるレプリケーション インスタンス用のネットワークを設定する必要があるため、次のセクションが必須となります。これらのリソースはお客様のアカウント内に存在するため、お客様に代わってこれらのアクションを実行できる必要があります。

{ "Effect": "Allow", "Action": [ "ec2:DescribeVpcs", "ec2:DescribeInternetGateways", "ec2:DescribeAvailabilityZones", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:ModifyNetworkInterfaceAttribute", "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterface" ], "Resource": "arn:aws:service:region:account:resourcetype/id" }

次のセクションは、ユーザーがレプリケーション インスタンスのメトリクスを表示することを許可するために必要です。

{ "Effect": "Allow", "Action": [ "cloudwatch:Get*", "cloudwatch:List*" ], "Resource": "arn:aws:service:region:account:resourcetype/id" }

このセクションは、ユーザーがレプリケーションログを表示することを許可するために必要です。

{ "Effect": "Allow", "Action": [ "logs:DescribeLogGroups", "logs:DescribeLogStreams", "logs:FilterLogEvents", "logs:GetLogEvents" ], "Resource": "arn:aws:service:region:account:resourcetype/id" }

次のセクションは、Amazon Redshift をターゲットとして使用する場合に必要です。これにより、AWS DMS は、Amazon Redshift クラスターが AWS DMS に対して適切に設定されていることを検証できます。

{ "Effect": "Allow", "Action": [ "redshift:Describe*", "redshift:ModifyClusterIamRoles" ], "Resource": "arn:aws:dms:region:account:resourcetype/id" }

AWS DMS コンソールは、AWS DMS コンソールを使用する際に AWS アカウントに自動的にアタッチされる複数のロールを作成します。AWS Command Line Interface (AWS CLI) または AWS DMS API を移行に使用する場合、これらのロールをアカウントに追加する必要があります。これらのロールの追加についての詳細は、「AWS CLI と AWS DMS API で使用する IAM ロールの作成」をご参照ください。

このポリシーを使用して AWS DMS にアクセスするための要件の詳細については、AWS DMS の使用に必要な IAM アクセス許可 をご参照ください。

ユーザーが自分の許可を表示できるようにする

この例では、ユーザーアイデンティティに添付されたインラインおよびマネージドポリシーの表示を IAM ユーザーに許可するポリシーを作成する方法を示します。このポリシーには、コンソールで、または AWS CLI か AWS API を使用してプログラム的に、このアクションを完了するアクセス許可が含まれています。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": ["arn:aws:iam::*:user/${aws:username}"] }, { "Sid": "NavigateInConsole", "Effect": "Allow", "Action": [ "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ] }

1 つの Amazon S3 バケットにアクセスするには

AWS DMS では、データベース移行の中間ストレージとして Amazon S3 バケットが使用されます。通常、AWS DMS では、この目的のためにデフォルトの S3 バケットが管理されています。ただし、場合によっては (特に AWS CLI または AWS DMS API を使用する場合)、AWS DMS では独自の S3 バケットを指定できます。たとえば、Amazon Redshift ターゲット エンドポイントにデータを移行するための独自の S3 バケットを指定できます。この場合は、AWS が管理する AmazonDMSRedshiftS3Role ポリシーに基づくアクセス許可のロールを作成する必要があります。

次の例は AmazonDMSRedshiftS3Role ポリシーの 1 つのバージョンを示しています。AWS DMS はこのポリシーにより、AWS アカウントの ユーザーに、1 つの Amazon S3 バケットへのアクセス権限を許可できます。また、このユーザーは、オブジェクトの追加、更新、削除を行うこともできます。

このポリシーでは、ユーザーに s3:PutObjects3:GetObjects3:DeleteObject のアクセス許可を付与するだけでなく、s3:ListAllMyBucketss3:GetBucketLocation、および s3:ListBucket のアクセス許可も付与します。これらが、コンソールで必要とされる追加のアクセス許可です。その他のアクセス許可では、バケットのライフサイクルの管理が AWS DMS に許可されます。また、オブジェクトをコピーするには、s3:GetObjectAcl アクションが必要です。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:ListBucket", "s3:DeleteBucket", "s3:GetBucketLocation", "s3:GetObject", "s3:PutObject", "s3:DeleteObject", "s3:GetObjectVersion", "s3:GetBucketPolicy", "s3:PutBucketPolicy", "s3:GetBucketAcl", "s3:PutBucketVersioning", "s3:GetBucketVersioning", "s3:PutLifecycleConfiguration", "s3:GetLifecycleConfiguration", "s3:DeleteBucketPolicy" ], "Resource": "arn:aws:s3:::dms-*" } ] }

このポリシーに基づくロールの作成の詳細については、「Amazon S3 バケットのセットアップ」をご参照ください。

タグに基づく AWS DMS リソースへのアクセス

アイデンティティベースのポリシーの条件を使用して、タグに基づいて AWS DMS リソースへのアクセスをコントロールできます。この例では、すべての AWS DMS エンドポイントへのアクセスを許可するポリシーを作成する方法を示しています。ただし、アクセス許可が付与されるのは、エンドポイントデータベースタグ Owner にそのユーザーのユーザー名の値がある場合のみです。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "dms:*", "Resource": "arn:aws:dms:*:*:endpoint/*", "Condition": { "StringEquals": {"dms:endpoint-tag/Owner": "${aws:username}"} } } ] }

このポリシーをアカウントの IAM ユーザーに添付できます。richard-roe という名前のユーザーが AWS DMS エンドポイントへのアクセスを試みる場合、エンドポイントデータベースには Owner=richard-roe または owner=richard-roe のタグが必要です。それ以外の場合、このユーザーはアクセスを拒否されます。条件キー名では大文字と小文字が区別されないため、条件タグキー OwnerOwnerowner の両方に一致します。詳細については、次を参照してください。IAM JSON ポリシー要素: Condition()IAM ユーザーガイド

リソースベースのポリシーの例 (AWS KMS)

AWS DMS では、カスタムの AWS KMS 暗号化キーを作成して、サポートされているターゲット エンドポイント データを暗号化できます。キーポリシーを作成して、サポートされているターゲットデータ暗号化用に作成する暗号化キーに、このポリシーをアタッチする方法については、「Amazon Redshift ターゲットデータを暗号化する AWS KMS キーの作成と使用」および「Amazon S3 ターゲットオブジェクトを暗号化する AWS KMS キーの作成」をご参照ください。

Amazon Redshift ターゲットデータを暗号化するためのカスタム AWS KMS 暗号化キーのポリシー

次の例は、Amazon Redshift ターゲットデータを暗号化するために作成する AWS KMS 暗号化キー用に作成されたキーポリシーの JSON を示しています。

{ "Id": "key-consolepolicy-3", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::987654321098:root" ] }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::987654321098:role/Admin" ] }, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:TagResource", "kms:UntagResource", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "*" }, { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::987654321098:role/DMS-Redshift-endpoint-access-role" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::987654321098:role/DMS-Redshift-endpoint-access-role" ] }, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } } ] }

ここでは、キーを作成する前に作成した Amazon Redshift ターゲットエンドポイントデータにアクセスするためのロールが、キーポリシーで参照されている箇所を確認できます。この例では、DMS-Redshift-endpoint-access-role です。また、異なるプリンシパル(ユーザーとロール)に対して許可されているさまざまなキーアクションも確認できます。たとえば、DMS-Redshift-endpoint-access-role のすべてのユーザーは、ターゲットデータを暗号化、復号化、および再暗号化できます。このようなユーザーは、エクスポート用のデータキーを生成し、AWS KMS の外でデータを暗号化することもできます。また、作成したキーなど、AWS KMS キーに関する詳細情報を返すこともできます。さらに、このようなユーザーは、ターゲット エンドポイントなどの AWS リソースへのアタッチメントを管理できます。

Amazon S3 ターゲットデータを暗号化するためのカスタム AWS KMS 暗号化キーのポリシー

次の例は、Amazon S3 ターゲットデータを暗号化するために作成する AWS KMS 暗号化キー用に作成されたキーポリシーの JSON を示しています。

{ "Id": "key-consolepolicy-3", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::987654321098:root" ] }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::987654321098:role/Admin" ] }, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:TagResource", "kms:UntagResource", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "*" }, { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::987654321098:role/DMS-S3-endpoint-access-role" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::987654321098:role/DMS-S3-endpoint-access-role" ] }, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } } ]

ここでは、キーの作成前に作成した Amazon S3 ターゲットエンドポイントデータにアクセスするためのロールが、キーポリシーで参照されている箇所を確認できます。この例では、DMS-S3-endpoint-access-role です。また、異なるプリンシパル(ユーザーとロール)に対して許可されているさまざまなキーアクションも確認できます。たとえば、DMS-S3-endpoint-access-role のすべてのユーザーは、ターゲットデータを暗号化、復号化、および再暗号化できます。このようなユーザーは、エクスポート用のデータキーを生成し、AWS KMS の外でデータを暗号化することもできます。また、作成したキーなど、AWS KMS キーに関する詳細情報を返すこともできます。さらに、このようなユーザーは、ターゲット エンドポイントなどの AWS リソースへのアタッチメントを管理できます。

シークレットを使用して AWS Database Migration Service エンドポイントにアクセスするには

AWS DMS では、[secret] (シークレット) は暗号化キーで、[secret authentication] (シークレット認証) を介して、サポートされた AWS DMS ソースエンドポイントまたはターゲットエンドポイントに対して、データベース接続を認証するための一連のユーザー認証情報を表すために使用されます。Oracle Advanced Storage Management (ASM) も使用する Oracle エンドポイントの場合、AWS DMS は、Oracle ASM にアクセスするためのユーザー認証情報を表す追加のシークレットが必要です。

クラウドやオンプレミスのアプリケーション、サービス、および IT リソースにアクセスするための認証情報を安全に作成、保存、取得するサービス AWS Secrets Manager を使用して、AWS DMS がシークレット認証に必要とする 1 つ、あるいは複数のシークレットを作成できます。これは、ユーザーを介さずに認証情報のセキュリティを強化する、暗号化されたシークレット値の定期的な自動ローテーションに対応します。AWS Secrets Manager でのシークレット値のローテーションを有効にすると、シークレットに依存するデータベースの移行に影響を与えずに、このシークレット値のローテーションが行われるようにもします。エンドポイント データベース接続を内密に認証するには、エンドポイント設定に含める SecretsManagerSecretId に割り当てる ID または ARN シークレットを作成します。Oracle ASM を Oracle エンドポイントの一部として内密に認証するには、エンドポイント設定にも含める SecretsManagerOracleAsmSecretId に ID または ARN を割り当てるシークレットを作成します。

AWS Secrets Managerの詳細については、AWS Secrets Manager ユーザーガイドの「AWSシークレット マネージャーとは?」をご参照ください。

AWS DMS は、サポートされているソースエンドポイントおよびターゲットエンドポイントで、次のオンプレミスまたは AWS マネージドデータベースのシークレット認証をサポートします。

  • Amazon DocumentDB

  • IBM Db2 LUW

  • Microsoft SQL Server

  • MongoDB

  • MySQL

  • Oracle

  • PostgreSQL

  • Amazon Redshift

  • SAP ASE

これらのデータベースに接続するにはエンドポイント設定の一部として、次のいずれかの値セットを入力できますが、両方を入力することはできません。

  • UserNamePasswordServerNamePort の設定を使用したデータベース接続を認証するクリアテキスト値。Oracle ASM も使用する Oracle エンドポイントの場合は、AsmUserNameAsmPasswordAsmServerName の設定を使用して ASM を認証するために追加のクリアテキスト値を含めます。

  • SecretsManagerSecretIdSecretsManagerAccessRoleArn 設定用の値を使用したシークレット認証。Oracle ASM を使用する Oracle エンドポイントの場合は、SecretsManagerOracleAsmSecretIdSecretsManagerOracleAsmAccessRoleArn 設定用に追加の値を含めます。これらの設定のシークレット値には次のものが含まれます。

    • SecretsManagerSecretId — AWS Secrets Manager でエンドポイントデータベースアクセス用に作成したシークレットの完全な Amazon リソースネーム (ARN)、ARN の一部、またはフレンドリ名。

    • SecretsManagerAccessRoleArn — ユーザーに代わってこの SecretsManagerSecretId シークレットへの AWS DMS アクセスを提供するために IAM に作成したシークレットアクセスロールの ARN。

    • SecretsManagerOracleAsmSecretId — AWS Secrets Manager で Oracle ASM アクセス用に作成したシークレットの完全な Amazon リソースネーム (ARN)、ARN の一部、またはフレンドリ名。

    • SecretsManagerOracleAsmAccessRoleArn — ユーザーに代わってこの SecretsManagerOracleAsmSecretId シークレットへの AWS DMS アクセスを提供するために IAM に作成したシークレットアクセスロールの ARN。

    注記

    また、単一のシークレットアクセスロールを使用して、SecretsManagerSecretId シークレットと SecretsManagerOracleAsmSecretId シークレットの両方に AWS DMS アクセスを提供することもできます。両方のシークレットに対してこの単一のシークレットアクセスロールを作成する場合は、このアクセスロール用の同じ ARN を SecretsManagerAccessRoleArnSecretsManagerOracleAsmAccessRoleArn の両方に割り当てます。例えば、両方のシークレットに対するシークレット アクセス ロールの ARN が変数 ARN2xsecrets に割り当てられている場合、これらの ARN 設定を次のように設定できます。

    SecretsManagerAccessRoleArn = ARN2xsecrets; SecretsManagerOracleAsmAccessRoleArn = ARN2xsecrets;

    これらの値を作成する詳細については、「AWS Management Console を使用してシークレットおよびシークレットアクセスロールを作成するには」をご参照ください。

エンドポイントに必要なシークレットおよびシークレットアクセスロールエンドポイント設定を作成し指定した後、これらのシークレットの詳細を含む CreateEndpoint または ModifyEndpoint API リクエストを実行するユーザーアカウントの許可を更新します。これらのアカウント許可には、シークレットアクセスロールに対する IAM:GetRole の許可とシークレットに対する SecretsManager:DescribeSecret の許可を含みます。AWS DMS では、アクセス ロールとそのシークレットの両方を検証するために、これらの許可が必要です。

必要なユーザー許可を提供して検証するには

  1. AWS Management Console にサインインして、AWS Identity and Access Management で https://console.aws.amazon.com/iam/ コンソールを開きます。

  2. [Users] (ユーザー) を選択し、CreateEndpointModifyEndpoint の API コールを行うために使用する [User ID] (ユーザー ID) を選択します。

  3. [Permissions] (許可) タブで、[{} JSON] を選択します。

  4. ユーザーに次のアクセス許可があることを確認します。

    { "Statement": [{ "Effect": "Allow", "Action": [ "iam:GetRole", "iam:PassRole" ], "Resource": "SECRET_ACCESS_ROLE_ARN" }, { "Effect": "Allow", "Action": "secretsmanager:DescribeSecret", "Resource": "SECRET_ARN" } ] }
  5. ユーザーにこれらの許可がない場合は、許可を追加します。

  6. IAM ロールを使用して DMS API コールを行う場合は、それぞれのロールで上記のステップを繰り返します。

  7. ターミナルを開き、AWS CLI を実行して、上記で使用したロールまたはユーザーを想定したうえで、許可が正しく与えられていることを検証します。

    1. に対するユーザーの権限を検証してください SecretAccessRole IAM の使用get-roleコマンド。

      aws iam get-role --role-name ROLE_NAME

      ROLE_NAME はロ SecretsManagerAccessRole 名前に置き換えます。

      コマンドがエラーメッセージを返す場合は、正しく許可されていることを確認してください。

    2. Secrets Manager describe-secret コマンドを使用して、シークレットに対するユーザー許可を検証します。

      aws secretsmanager describe-secret --secret-id SECRET_NAME OR SECRET_ARN --region=REGION_NAME

      ユーザーには、フレンドリ名、ARN の一部、または完全な ARN を指定できます。詳細については、「describe-secret」をご参照ください。

      コマンドがエラー メッセージを返す場合は、正しく許可されていることを確認してください。

AWS Management Console を使用してシークレットおよびシークレットアクセスロールを作成するには

AWS Management Console を使用してエンドポイント認証のシークレットを作成し、ユーザーに代わって AWS DMS にシークレットへのアクセスを許可するポリシーとロールを作成します。

AWS DMS がソースエンドポイントおよびターゲットエンドポイントの接続用にデータベースの認証を使用できる AWS Management Console を使用してシークレットを作成するには

  1. AWS Management Console にサインインして、AWS Secrets Manager で https://console.aws.amazon.com/secretsmanager/ コンソールを開きます。

  2. [Store a new secret] (新しいシークレットの保存) を選択します。

  3. [Store a new secret] (新しいシークレットの保存) ページの [Select secret type] (シークレットタイプの選択) で、[Other type of secrets] (他の種類のシークレット) を選択し、次に[Plaintext] (プレーンテキスト) を選択します。

    注記

    これ以降で、エンドポイントデータベースに接続するために、クリアテキストの認証情報を入力する必要があるのはここだけです。

  4. [Plaintext] (プレーンテキスト) フィールド

    • SecretsManagerSecretId にアイデンティティを割り当てるシークレットでは、次の JSON 構造を入力します。

      { "username": db_username, "password": db_user_password, "port": db_port_number, "host": db_server_name }
      注記

      これは、エンドポイントデータベースの認証に必要な JSON メンバーの最小リストです。任意の JSON エンドポイント設定をすべて小文字で JSON メンバーとして追加できます。ただし、AWS DMS では、エンドポイント認証用の追加 JSON メンバーは無視されます。

      ここで、db_username は、データベースにアクセスしているユーザーの名前で、db_user_password は、データベースのユーザーパスワード、db_port_number は、データベースにアクセスするためのポート番号、db_server_name は、次の例のように、ウェブ上のデータベースサーバー名 (アドレス) です。

      { "username": "admin", "password": "some_password", "port": "8190", "host": "oracle101.abcdefghij.us-east-1.rds.amazonaws.com" }
    • SecretsManagerOracleAsmSecretId にアイデンティティを割り当てるシークレットについては、次の JSON 構造を入力します。

      { "asm_user": asm_username, "asm_password": asm_user_password, "asm_server": asm_server_name }
      注記

      これは、Oracle エンドポイント用に Oracle ASM を認証するために最低限必要な JSON メンバーのリストです。また、利用可能な Oracle ASM エンドポイント設定に基づいて指定できる完全なリストでもあります。

      ここで、asm_username は、Oracle ASM にアクセスしているユーザー名、asm_user_password は Oracle ASM ユーザーのパスワード、asm_server_name は、次の例のように、ポートを含むウェブの Oracle ASM サーバー名 (アドレス) です。

      { "asm_user": "oracle_asm_user", "asm_password": "oracle_asm_password", "asm_server": "oracle101.abcdefghij.us-east-1.rds.amazonaws.com:8190/+ASM" }
  5. シークレットの暗号化に使用するAWS KMS暗号化キーを選択します。サービス用に AWS Secrets Manager によって作成されたデフォルトの暗号化キーに同意するか、作成した AWS KMS キーを選択できます。

  6. このシークレットを参照する名前とオプションの説明を指定します。これは、SecretsManagerSecretId または SecretsManagerOracleAsmSecretId の値として使用するフレンドリ名です。

  7. シークレットで自動ローテーションを有効にする場合は、説明のようにシークレットの認証情報をローテーションする許可を持つ AWS Lambda 関数を選択または作成する必要があります。ただし、Lambda 関数を使用するように自動ローテーションを設定する前に、関数の構成設定で次の 4 文字を EXCLUDE_CHARACTERS 環境変数の値に追加します。

    ;.:+

    AWS DMS では、エンドポイントの認証情報に使用されるパスワードにこれらの文字を許可していません。これらを除外するように Lambda 関数を設定すると、AWS Secrets Manager はローテーションされたパスワードの値の一部としてこれらの文字を生成できなくなります。Lambda 関数を使用するように自動ローテーションを設定したら、AWS Secrets Manager はシークレットをすぐにローテーションして、シークレット構成を検証します。

    注記

    データベースエンジンの構成によっては、データベースでローテーションされた認証情報がフェッチされない場合があります。この場合、認証情報を更新するには、タスクをマニュアルで再起動する必要があります。

  8. AWS Secrets Manager のシークレットを確認して保存します。次に、各シークレットを AWS Secrets Manager のフレンドリ名で検索し、必要に応じて SecretsManagerSecretId または SecretsManagerOracleAsmSecretId の値としてシークレット ARN を取得し、エンドポイントデータベース接続および Oracle ASM (使用されている場合) へのアクセスを認証することができます。

SecretsManagerAccessRoleArn または SecretsManagerOracleAsmAccessRoleArn を設定するためにシークレットアクセスポリシーとロールを作成し、AWS DMS の AWS Secrets Manager へのアクセスを許可し、適切なシークレットにアクセスするには

  1. AWS Management Console にサインインして、https://console.aws.amazon.com/iam の AWS Identity and Access Management (IAM) マネジメントコンソールを開きます。

  2. [Policies] (ポリシー) を選択し、次に[Create Policy] (ポリシー作成) を選択します

  3. [JSON] を選択し、次のポリシーを入力して、シークレットへのアクセスと復号化を有効にします。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": secret_arn, }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:DescribeKey" ], "Resource": kms_key_arn, } ] }

    ここで、secret_arn はシークレット ARN で、必要に応じて SecretsManagerSecretId または SecretsManagerOracleAsmSecretId のいずれかより入手できます。kms_key_arn は、次の例のように、シークレットを暗号化するために使用する AWS KMS キーの ARN です。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:us-east-2:123456789012:secret:MySQLTestSecret-qeHamH" }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:DescribeKey" ], "Resource": "arn:aws:kms:us-east-2:123456789012:key/761138dc-0542-4e58-947f-4a3a8458d0fd" } ] }
    注記

    AWS Secrets Manager で作成されたデフォルトの暗号化キーを使用する場合、kms_key_arn に AWS KMS 許可を指定する必要はありません。

    ポリシーで両方のシークレットへのアクセスを許可する場合は、もう 1 つの [secret_arn] に追加の JSON リソースオブジェクトを指定するだけです。

  4. フレンドリ名とオプションの説明を使用して、ポリシーを確認して作成します。

  5. [Roles] (ロール)、[Create role] (ロールの作成) の順に選択します。

  6. 信頼されたエンティティの種類に、[AWS service] (サービス) を選択します。

  7. 選択してくださいDMS信頼されたサービスのリストから、次へ: アクセス許可.

  8. ステップ 4 で作成したポリシーを検索しアタッチし、任意のタグを追加しながらロールを確認します。この時点で、信頼されたエンティティとして AWS DMS のリージョンサービスのプリンシパルを使用するロール用に信頼関係を編集します。このプリンシパルの形式は以下のとおりです。

    dms.region-name.amazonaws.com

    ここで、region-name は 例えば us-east-1 などといったリージョンの名前です。したがって、このリージョンの AWS DMS リージョンサービスのプリンシパルが続きます。

    dms.us-east-1.amazonaws.com
  9. ロールの信頼されたエンティティを編集した後、フレンドリ名とオプションの説明を使用してロールを作成します。IAM でフレンドリ名を持つ新しいロールを検索し、ロール ARN を SecretsManagerAccessRoleArn または SecretsManagerOracleAsmAccessRoleArn の値として取得して、エンドポイントデータベース接続を認証することができるようになりました。

プライベートサブネットのレプリケーションインスタンスで Secrets Manager を使用するには

  1. Secrets Manager VPC エンドポイントを作成し、エンドポイントの DNS を書き留めます。Secrets Manager VPC エンドポイントの作成方法の詳細については、AWS Secrets Manager ユーザーガイドの「VPC endpoint を介した Secrets Manager への接続 を参照ください。

  2. レプリケーションインスタンスのセキュリティグループを Secrets Manager VPC エンドポイントにアタッチします。

  3. レプリケーションインスタンスのセキュリティグループのエグレスルールでは、送信先 0.0.0.0/0 のすべてのトラフィックを許可します。

  4. エンドポイントの追加接続属性 secretsManagerEndpointOverride=secretsManager endpoint DNS を設定し、次の例に示すように、シークレットマネージャーの VPC エンドポイント DNS を入力します。

    secretsManagerEndpointOverride=vpce-1234a5678b9012c-12345678.secretsmanager.eu-west-1.vpce.amazonaws.com

AWS Database Migration Service アイデンティティとアクセスに関するトラブルシューティング

次の情報は、AWS DMS と IAM の使用に伴って発生する可能性がある一般的な問題の診断や修復に役立ちます。

AWS DMS でアクションを実行する権限がない

AWS Management Console から、アクションを実行する認可がないと通知された場合、管理者に問い合わせ、サポートを依頼する必要があります。担当の管理者はお客様のユーザー名とパスワードを発行した人です。

以下の例のエラーは、mateojackson IAM ユーザーがコンソールを使用して、AWS DMS エンドポイントの詳細を表示しようとしているが、dms: DescribeEndpoint アクセス許可がない場合に発生します。

User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: dms:DescribeEndpoint on resource: my-postgresql-target

この場合、Mateo は、dms:DescribeEndpoint アクションを使用して my-postgresql-target エンドポイントにアクセスできるように、ポリシーの更新を管理者に依頼します。

iam: を実行する権限がないPassRole

iam:PassRole アクションを実行する権限がないというエラーが表示された場合は、ポリシーを更新して AWS DMS にロールを渡すことができるようにする必要があります。

一部の AWS のサービスでは、新しいサービスロールやサービスにリンクされたロールを作成せずに、既存のロールをサービスに渡すことができます。そのためには、サービスにロールを渡す許可が必要です。

以下の例のエラーは、 marymajor という IAM ユーザーがコンソールを使用して AWS DMS でアクションを実行しようする場合に発生します。ただし、このアクションをサービスが実行するには、サービスロールから付与されたアクセス許可が必要です。Mary には、ロールをサービスに渡す許可がありません。

User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole

この場合、メアリーのポリシーを更新してメアリーに iam:PassRole アクションの実行を許可する必要があります。

サポートが必要な場合は、AWS 管理者に問い合わせてください。サインイン資格情報を提供した担当者が管理者です。

アクセスキーを表示したい

IAM ユーザーアクセスキーを作成した後は、いつでもアクセスキー ID を表示できます。ただし、シークレットアクセスキーを再表示することはできません。シークレットアクセスキーを紛失した場合は、新しいキーペアを作成する必要があります。

アクセスキーは、アクセスキー ID (例: AKIAIOSFODNN7EXAMPLE) とシークレットアクセスキー (例: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY) の 2 つの部分から構成されています。ユーザー名とパスワードと同様に、リクエストを認証するために、アクセスキー ID とシークレットアクセスキーの両方を使用する必要があります。ユーザー名とパスワードと同様に、アクセスキーを安全に管理してください。

重要

正規のユーザー ID を確認するためであっても、アクセスキーをサードパーティーに提供しないでください。提供すると、第三者がアカウントへの永続的なアクセスを取得する場合があります。

アクセスキーペアを作成する場合、アクセスキー ID とシークレットアクセスキーを安全な場所に保存するように求めるプロンプトが表示されます。このシークレットアクセスキーは、作成時にのみ使用できます。シークレットアクセスキーを紛失した場合、IAM ユーザーに新しいアクセスキーを追加する必要があります。アクセスキーは最大 2 つまで持つことができます。既に 2 つある場合は、新しいキーペアを作成する前に、いずれかを削除する必要があります。手順を表示するには、IAM ユーザーガイドの「アクセスキーの管理」を参照してください。

管理者として AWS DMS へのアクセスを他のユーザーに許可したい

AWS DMS へのアクセスを他のユーザーに許可するには、アクセスを必要とする人またはアプリケーションの IAM エンティティ (ユーザーまたはロール) を作成する必要があります。ユーザーは、このエンティティの認証情報を使用して AWS にアクセスします。次に、AWS DMS の適切なアクセス許可を付与するポリシーを、そのエンティティにアタッチする必要があります。

すぐに開始するには、IAM ユーザーガイドの「IAM が委任した最初のユーザーおよびグループの作成」を参照してください。

AWS アカウント以外の人が私の AWS DMS リソースにアクセスできるようにしたい

他のアカウントのユーザーや組織外のユーザーが、リソースへのアクセスに使用できるロールを作成できます。ロールの引き受けを委託するユーザーを指定することができます。リソースベースのポリシーまたはアクセス制御リスト (ACL) をサポートするサービスの場合、それらのポリシーを使用して、リソースへのアクセスを付与できます。

詳細については、以下をご参照ください。

AWS Database Migration Service のコンプライアンス検証

サードパーティーの監査員は、複数の AWS コンプライアンスプログラムの一環として AWS Database Migration Service のセキュリティとコンプライアンスを評価します。これには次のものが含まれます:

  • SOC

  • PCI

  • ISO

  • FedRAMP

  • DoD CC SRG

  • HIPAA BAA

  • MTCS

  • CS

  • K-ISMS

  • ENS High

  • OSPAR

  • HITRUST CSF

特定のコンプライアンスプログラムの対象となる AWS サービスのリストについては、「コンプライアンスプログラムによる AWS 対象範囲内のサービス」をご参照ください。一般的な情報については、「AWS コンプライアンスプログラム」を参照してください。

AWS Artifact を使用して、サードパーティーの監査レポートをダウンロードできます。詳細については、次を参照してください。にレポートをダウンロードするAWSアーティファクト

AWS DMS を使用する際のお客様のコンプライアンス責任は、お客様のデータの機密性や貴社のコンプライアンス目的、適用される法律および規制によって決まります。AWS では、コンプライアンスに役立つ以下のリソースを提供しています。

  • (セキュリティ&コンプライアンス クイックリファレンスガイド) の「Security and compliance quick start guides」(セキュリティ&コンプライアンス クイックリファレンスガイド) – これらのデプロイガイドには、アーキテクチャ上の考慮事項の説明と、AWS でセキュリティとコンプライアンスに重点を置いたベースライン環境をデプロイするためのステップが記載されています。

  • 「Architecting for HIPAA security and compliance」ホワイトペーパー - このホワイトペーパーは、企業が AWS を使用して HIPAA 準拠のアプリケーションを作成する方法について説明します。

  • AWS コンプライアンスのリソース – このワークブックおよびガイドのコレクションに、お客様の業界と拠点に当てはまるものがあるかもしれません。

  • AWS Config - この AWS サービスでは、自社プラクティス、業界ガイドライン、および規制に対するリソースの設定の準拠状態を評価します。

  • AWS Security Hub – この AWS のサービスでは、AWS 内のセキュリティ状態を包括的に表示しており、セキュリティの業界標準およびベストプラクティスへの準拠を確認するのに役立ちます。

AWS Database Migration Service での耐障害性

AWS のグローバルインフラストラクチャは AWS リージョンとアベイラビリティーゾーンを中心に構築されます。AWSリージョンには、低レイテンシー、高いスループット、そして高度の冗長ネットワークで接続されている複数の物理的に独立し隔離されたアベイラビリティーゾーンがあります。アベイラビリティーゾーンでは、アベイラビリティーゾーン間で中断せずに、自動的にフェイルオーバーするアプリケーションとデータベースを設計および運用することができます。アベイラビリティーゾーンは、従来の単一または複数のデータセンターインフラストラクチャよりも可用性、耐障害性、および拡張性が優れています。

AWS のリージョンとアベイラビリティーゾーンの詳細については、「AWS グローバルインフラストラクチャ」をご参照ください。

AWSグローバルインフラストラクチャに加え、AWS DMSは、Multi-AZ Multi-AZオプションを選択した場合、マルチ AZ 配置を使用するレプリケーション インスタンスに高可用性およびフェイルオーバーにも対応します。

マルチ AZ 配置では、AWS DMS は異なるアベイラビリティーゾーンにレプリケーション インスタンスのスタンバイ レプリカを自動的にプロビジョニングして維持します。プライマリレプリケーション インスタンスは、同期的にスタンバイレプリカにレプリケートされます。プライマリレプリケーション インスタンスに障害が発生するか、応答しない場合、スタンバイ状態で中断時間をできる限り抑えて、実行中のタスクを再開します。プライマリはその状態を常にスタンバイにレプリケーションしているため、マルチ AZ 配置ではパフォーマンス上のオーバーヘッドが発生します。

マルチ AZ 配置の使用については、「AWS DMS レプリケーション インスタンスを使用する」をご参照ください。

AWS Database Migration Service でのインフラストラクチャセキュリティ

マネージドサービスとして、AWS Database Migration Serviceによって保護されていますAWSで説明されているグローバルネットワークセキュリティ手順Amazon Web Services: セキュリティプロセスの概要ホワイトペーパー。

AWS の発行済み API コールを使用して、ネットワーク経由で AWS DMS にアクセスします。クライアントで Transport Layer Security (TLS) 1.0 以降がサポートされている必要があります。また、Ephemeral Diffie-Hellman (DHE)や Elliptic Curve Ephemeral Diffie-Hellman (ECDHE) などの Perfect Forward Secrecy (PFS)を使用した暗号スイートもクライアントでサポートされている必要があります。これらのモードは、Java 7 以降など、最近のほとんどのシステムでサポートされています。

また、リクエストは、アクセスキー ID と、AWS Identity and Access Management (IAM) プリンシパルに関連付けられているシークレットアクセスキーを使用して署名する必要があります。または、AWS Security Token Service (AWS STS) を使用して、一時セキュリティ認証情報を生成し、リクエストに署名することもできます。

これらの API オペレーションは任意のネットワークの場所から呼び出すことができますが、AWS DMS ではリソースベースのアクセスポリシーにも対応し、これには例えば送信元 IP アドレスに基づくアクションの制限も含めることができます。また、AWS DMS ポリシーを使用して、特定の Amazon VPC エンドポイントまたは特定のVirtual Private Cloud (VPC) からのアクセスを制御することもできます。これにより、実質的に AWS ネットワーク内の特定の VPC からの特定の AWS DMS リソースへのネットワークアクセスが分離されます。AWS DMS でリソースベースのポリシーを使用する方法の詳細については、「リソース名とタグを使用したファイングレインアクセスコントロール」をご参照ください。

AWS DMS との通信を単一の VPC 内に限定するには、AWS PrivateLink を通して AWS DMS に接続できる VPC インターフェイスエンドポイントを作成します。AWS PrivateLink は AWS DMS への呼び出しを確実にするのに役立ち、関連付けられた結果は、インターフェイスエンドポイントが作成される特定の VPC に限定されたままとなります。次に、このインターフェイスエンドポイントの URL を AWS CLI または SDK を使用して実行する、すべての AWS DMS コマンドでオプションとして指定できます。これにより、AWS DMS との通信全体は VPC に限定されたままとなり、それ以外は公開インターネットから見えなくなります。

単一の VPC 内の DMS にアクセスするためのインターフェイスエンドポイントを作成するには

  1. AWS Management Console にサインインして、Amazon VPC コンソール (https://console.aws.amazon.com/vpc/) を開きます。

  2. ナビゲーションペインで、[Endpoints] (エンドポイント) を選択します。これにより、[Create endpoints] (エンドポイントの作成) ページが開き、VPC から AWS DMS にインターフェイスエンドポイントを作成できます。

  3. 選択してくださいAWSサービスを選択し、次に検索して値を選択しますサービス名、この場合、AWS DMSこれには、以下の形式が使用されます。

    com.amazonaws.region.dms

    ここで、region は例えば com.amazonaws.us-west-2.dms のような AWS DMS が実行されている AWS リージョンを指定します。

  4. [VPC] では、例えば vpc-12abcd34 のように VPC から作成するインターフェイス エンドポイントを選択します。

  5. [Availability Zone] (アベイラビリティーゾーン) と [Subnet ID] (サブネット ID) の値を選択します。これらの値は選択した AWS DMS エンドポイントが実行可能な場所 (例えば us-west-2a (usw2-az1)subnet-ab123cd4) を示す必要があります。

  6. [Enable DNS name] (DNS 名を有効化) を選択して、DNS 名でエンドポイントを作成します。この DNS 名は、ランダムな文字列 (ab12dc34) とハイフンでつながれたエンドポイント ID (vpce-12abcd34efg567hij) からなります。これらは、ドットで区切られた逆の順序でドットによって、追加された vpce (dms.us-west-2.vpce.amazonaws.com) とサービス名から区切られます。

    例: vpce-12abcd34efg567hij-ab12dc34.dms.us-west-2.vpce.amazonaws.com

  7. [Security group] (セキュリティグループ) では、エンドポイントに使用するグループを選択します。

    セキュリティグループを設定する際、そのグループ内からのアウトバウンド HTTPS コールを許可するようにしてください。詳細については、Amazon VPC ユーザーガイドの「セキュリティグループ作成」をご参照ください。

  8. [Full Access] (完全アクセス) またはカスタム値を [Policy] (ポリシー) で選択します。例えば、エンドポイントの特定のアクションとリソースへのアクセスを制限する、次のようなカスタムポリシーを選択できます。

    { "Statement": [ { "Action": "dms:*", "Effect": "Allow", "Resource": "*", "Principal": "*" }, { "Action": [ "dms:ModifyReplicationInstance", "dms:DeleteReplicationInstance" ], "Effect": "Deny", "Resource": "arn:aws:dms:us-west-2:<account-id>:rep:<replication-instance-id>", "Principal": "*" } ] }

    ここのサンプルポリシーでは、特定のレプリケーションインスタンスの削除または変更を除き AWS DMS API コールを許可します。

ステップ 6 でオプションとして作成した DNS 名を使用して形成された URL を指定できるようになりました。すべての AWS DMS CLI コマンドまたは API オペレーションにこれを指定し、作成したインターフェイスエンドポイントを使用してサービスインスタンスにアクセスします。例えば、以下に示すように、この VPC で DMS CLI コマンド DescribeEndpoints を実行することが可能です。

$ aws dms describe-endpoints --endpoint-url https://vpce-12abcd34efg567hij-ab12dc34.dms.us-west-2.vpce.amazonaws.com

プライベート DNS オプションを有効にすると、エンドポイント URL をリクエストに指定する必要はありません。

VPC インターフェイスエンドポイントの作成と使用 (プライベート DNS オプションの有効化を含む) の詳細については、インターフェイス VPC エンドポイント (AWS PrivateLink)()Amazon VPC User Guide

AWS DMS の使用に必要な IAM アクセス許可

AWS DMS を使用するには、特定の IAM アクセス許可と IAM ロールを使用します。IAM ユーザーとしてサインインして AWS DMS を使用する場合、アカウント管理者は、このセクションで示すポリシーを AWS DMS の実行に使用する IAM ユーザー、グループ、またはロールにアタッチする必要があります。IAM アクセス許可の詳細については、『IAM ユーザーガイド』をご参照ください。

次のポリシーにより、次の項目にアクセスできます。AWS DMS、その他の Amazon サービスで必要とされる特定のアクションの権限AWS KMS、IAM、Amazon EC2、およびAmazon CloudWatch。 CloudWatchの監視AWS DMS移行をリアルタイムで実行し、移行の進行状況を示すメトリクスを収集および追跡します。以下を使用できます。 CloudWatch タスクに関する問題をデバッグするためのログ。

注記

タグ付けを使用して、AWS DMS リソースへのアクセスをさらに制限できます。タグ付けを使用して AWS DMS リソースへのアクセスを制限する方法については、「リソース名とタグを使用したファイングレインアクセスコントロール」をご参照ください。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "dms:*", "Resource": "arn:aws:dms:region:account:resourcetype/id" }, { "Effect": "Allow", "Action": [ "kms:ListAliases", "kms:DescribeKey" ], "Resource": "arn:aws:service:region:account:resourcetype/id" }, { "Effect": "Allow", "Action": [ "iam:GetRole", "iam:PassRole", "iam:CreateRole", "iam:AttachRolePolicy" ], "Resource": "arn:aws:service:region:account:resourcetype/id" }, { "Effect": "Allow", "Action": [ "ec2:DescribeVpcs", "ec2:DescribeInternetGateways", "ec2:DescribeAvailabilityZones", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:ModifyNetworkInterfaceAttribute", "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterface" ], "Resource": "arn:aws:service:region:account:resourcetype/id" }, { "Effect": "Allow", "Action": [ "cloudwatch:Get*", "cloudwatch:List*" ], "Resource": "arn:aws:service:region:account:resourcetype/id" }, { "Effect": "Allow", "Action": [ "logs:DescribeLogGroups", "logs:DescribeLogStreams", "logs:FilterLogEvents", "logs:GetLogEvents" ], "Resource": "arn:aws:service:region:account:resourcetype/id" }, { "Effect": "Allow", "Action": [ "redshift:Describe*", "redshift:ModifyClusterIamRoles" ], "Resource": "arn:aws:dms:region:account:resourcetype/id" } ] }

これらの以下のアクセス許可明細は、それぞれのアクセス許可が必要な理由を理解するうえで役立ちます。

次のセクションは、ユーザーが AWS DMS API オペレーションを呼び出すことを許可するために必要です。

{ "Effect": "Allow", "Action": "dms:*", "Resource": "arn:aws:dms:region:account:resourcetype/id" }

次のセクションは、利用可能な AWS KMS キーとエイリアスをユーザーがリストし、コンソールに表示することを許可するために必要です。KMS キーの Amazon リソースネーム (ARN) がわかり、AWS Command Line Interface (AWS CLI) のみを使用している場合、このエントリは必要ではありません。

{ "Effect": "Allow", "Action": [ "kms:ListAliases", "kms:DescribeKey" ], "Resource": "arn:aws:service:region:account:resourcetype/id" }

次のセクションは、エンドポイントとともに IAM ロールの ARN を渡す必要がある特定のエンドポイントタイプに必要になります。また、必要な AWS DMS ロールが事前に作成されていない場合は、そのロールを AWS DMS コンソールで作成できます。すべてのロールが事前に設定されている場合、必要なものは iam:GetRole および iam:PassRole のみです。ロールの詳細については、「AWS CLI と AWS DMS API で使用する IAM ロールの作成」をご参照ください。

{ "Effect": "Allow", "Action": [ "iam:GetRole", "iam:PassRole", "iam:CreateRole", "iam:AttachRolePolicy" ], "Resource": "arn:aws:service:region:account:resourcetype/id" }

AWS DMS には Amazon EC2 インスタンスを作成し、作成されるレプリケーション インスタンス用のネットワークを設定する必要があるため、次のセクションが必須となります。これらのリソースはお客様のアカウント内に存在するため、お客様に代わってこれらのアクションを実行できる必要があります。

{ "Effect": "Allow", "Action": [ "ec2:DescribeVpcs", "ec2:DescribeInternetGateways", "ec2:DescribeAvailabilityZones", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:ModifyNetworkInterfaceAttribute", "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterface" ], "Resource": "arn:aws:service:region:account:resourcetype/id" }

次のセクションは、ユーザーがレプリケーション インスタンスのメトリクスを表示することを許可するために必要です。

{ "Effect": "Allow", "Action": [ "cloudwatch:Get*", "cloudwatch:List*" ], "Resource": "arn:aws:service:region:account:resourcetype/id" }

このセクションは、ユーザーがレプリケーションログを表示することを許可するために必要です。

{ "Effect": "Allow", "Action": [ "logs:DescribeLogGroups", "logs:DescribeLogStreams", "logs:FilterLogEvents", "logs:GetLogEvents" ], "Resource": "arn:aws:service:region:account:resourcetype/id" }

次のセクションは、Amazon Redshift をターゲットとして使用する場合に必要です。これにより、AWS DMS は、Amazon Redshift クラスターが AWS DMS に対して適切に設定されていることを検証できます。

{ "Effect": "Allow", "Action": [ "redshift:Describe*", "redshift:ModifyClusterIamRoles" ], "Resource": "arn:aws:dms:region:account:resourcetype/id" }

AWS DMS コンソールは、AWS DMS コンソールを使用する際に AWS アカウントに自動的にアタッチされる複数のロールを作成します。AWS Command Line Interface (AWS CLI) または AWS DMS API を移行に使用する場合、これらのロールをアカウントに追加する必要があります。これらのロールの追加についての詳細は、「AWS CLI と AWS DMS API で使用する IAM ロールの作成」をご参照ください。

AWS CLI と AWS DMS API で使用する IAM ロールの作成

AWS CLI または AWS DMS API をデータベース移行に使用する場合は、AWS DMS の機能を使用する前に 3 つの IAM ロールを AWS アカウントに追加する必要があります。これらのロールのうち 2 つは dms-vpc-roledms-cloudwatch-logs-role です。Amazon Redshift をターゲットデータベースとして使用している場合、IAM ロールdms-access-for-endpoint も AWS アカウントに追加する必要があります。

管理ポリシーの更新は自動です。IAM ロールでカスタムポリシーを使用する場合、このドキュメントで管理ポリシーの更新事項がないか定期的に確認してください。管理ポリシーの詳細は、get-policy コマンドと get-policy-version コマンドを組み合わせて使用して表示できます。

たとえば、次の get-policy コマンドは、指定された IAM ロールに関する情報を取得します。

aws iam get-policy --policy-arn arn:aws:iam::aws:policy/service-role/AmazonDMSVPCManagementRole

コマンドから返される情報は、次のとおりです。

{ "Policy": { "PolicyName": "AmazonDMSVPCManagementRole", "Description": "Provides access to manage VPC settings for AWS managed customer configurations", "CreateDate": "2015-11-18T16:33:19Z", "AttachmentCount": 1, "IsAttachable": true, "PolicyId": "ANPAJHKIGMBQI4AEFFSYO", "DefaultVersionId": "v3", "Path": "/service-role/", "Arn": "arn:aws:iam::aws:policy/service-role/AmazonDMSVPCManagementRole", "UpdateDate": "2016-05-23T16:29:57Z" } }

次の get-policy-version コマンドは、IAM ポリシー情報を取得します。

aws iam get-policy-version --policy-arn arn:aws:iam::aws:policy/service-role/AmazonDMSVPCManagementRole --version-id v3

コマンドから返される情報は、次のとおりです。

{ "PolicyVersion": { "CreateDate": "2016-05-23T16:29:57Z", "VersionId": "v3", "Document": { "Version": "2012-10-17", "Statement": [ { "Action": [ "ec2:CreateNetworkInterface", "ec2:DescribeAvailabilityZones", "ec2:DescribeInternetGateways", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:DeleteNetworkInterface", "ec2:ModifyNetworkInterfaceAttribute" ], "Resource": "arn:aws:service:region:account:resourcetype/id", "Effect": "Allow" } ] }, "IsDefaultVersion": true } }

同じコマンドを使用して、AmazonDMSRedshiftS3Role および AmazonDMSCloudWatchLogsRole 管理ポリシーに関する情報を取得できます。

注記

データベースの移行に AWS DMS コンソールを使用すると、これらのロールは AWS アカウントに自動的に追加されます。

次の手順では、dms-vpc-roledms-cloudwatch-logs-role、および dms-access-for-endpoint の各 IAM ロールを作成します。

を作成するには dms-vpc-role で使用する IAM ロールAWS CLIまたはAWS DMSAPI

  1. 次の IAM ポリシーを含む JSON ファイルを作成します。JSON ファイルに dmsAssumeRolePolicyDocument.json という名前を付けます。

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

    次のコマンドを使用して AWS CLI でロールを作成します。

    aws iam create-role --role-name dms-vpc-role --assume-role-policy-document file://dmsAssumeRolePolicyDocument.json
  2. 次のコマンドを使用して AmazonDMSVPCManagementRole ポリシーを dms-vpc-role にアタッチします。

    aws iam attach-role-policy --role-name dms-vpc-role --policy-arn arn:aws:iam::aws:policy/service-role/AmazonDMSVPCManagementRole

を作成するには dms-cloudwatch-logs-role で使用する IAM ロールAWS CLIまたはAWS DMSAPI

  1. 次の IAM ポリシーを含む JSON ファイルを作成します。JSON ファイルに dmsAssumeRolePolicyDocument2.json という名前を付けます。

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

    次のコマンドを使用して AWS CLI でロールを作成します。

    aws iam create-role --role-name dms-cloudwatch-logs-role --assume-role-policy-document file://dmsAssumeRolePolicyDocument2.json
  2. 次のコマンドを使用して AmazonDMSCloudWatchLogsRole ポリシーを dms-cloudwatch-logs-role にアタッチします。

    aws iam attach-role-policy --role-name dms-cloudwatch-logs-role --policy-arn arn:aws:iam::aws:policy/service-role/AmazonDMSCloudWatchLogsRole

Amazon Redshift をターゲットデータベースとして使用する場合は、IAM ロール dms-access-for-endpoint を作成して Amazon S3 へのアクセスを可能にする必要があります。

を作成するには dms-access-for-endpoint ターゲットデータベースとしての Amazon Redshift で使用する IAM ロール

  1. 次の IAM ポリシーを含む JSON ファイルを作成します。JSON ファイルに dmsAssumeRolePolicyDocument3.json という名前を付けます。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "1", "Effect": "Allow", "Principal": { "Service": "dms.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Sid": "2", "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. 次のコマンドを使用して AWS CLI でロールを作成します。

    aws iam create-role --role-name dms-access-for-endpoint --assume-role-policy-document file://dmsAssumeRolePolicyDocument3.json
  3. 次のコマンドを使用して AmazonDMSRedshiftS3Role ポリシーを dms-access-for-endpoint ロールにアタッチします。

    aws iam attach-role-policy --role-name dms-access-for-endpoint \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonDMSRedshiftS3Role

AWS CLI または AWS DMS API を使用するための IAM ポリシーが設定されている必要があります。

リソース名とタグを使用したファイングレインアクセスコントロール

Amazon リソースネーム (ARN) に基づくリソース名とリソースタグを使用して、AWS DMS リソースへのアクセスを管理できます。これを行うには、許可されたアクションを定義するか、条件ステートメントを IAM ポリシーに含めます。

リソース名を使用したアクセスの制御

IAM ユーザーアカウントを作成し、AWS DMS リソースの ARN に基づいてポリシーを割り当てることができます。

次のポリシーでは、ARN arn:aws:dms:us-east-1:152683116:rep:DOH67ZTOXGLIXMIHKITV を使用して、AWS DMS レプリケーション インスタンスへのアクセスを拒否します。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "dms:*" ], "Effect": "Deny", "Resource": "arn:aws:dms:us-east-1:152683116:rep:DOH67ZTOXGLIXMIHKITV" } ] }

たとえば、このポリシーが有効になっていると、次のコマンドは失敗します。

$ aws dms delete-replication-instance --replication-instance-arn "arn:aws:dms:us-east-1:152683116:rep:DOH67ZTOXGLIXMIHKITV" A client error (AccessDeniedException) occurred when calling the DeleteReplicationInstance operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:DeleteReplicationInstance on resource: arn:aws:dms:us-east-1:152683116:rep:DOH67ZTOXGLIXMIHKITV $ aws dms modify-replication-instance --replication-instance-arn "arn:aws:dms:us-east-1:152683116:rep:DOH67ZTOXGLIXMIHKITV" A client error (AccessDeniedException) occurred when calling the ModifyReplicationInstance operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:ModifyReplicationInstance on resource: arn:aws:dms:us-east-1:152683116:rep:DOH67ZTOXGLIXMIHKITV

AWS DMS エンドポイントとレプリケーションタスクへのアクセスを制限する IAM ポリシーを指定することもできます。

以下のポリシーでは、エンドポイントの ARN を使用して AWS DMS エンドポイントへのアクセスを制限します。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "dms:*" ], "Effect": "Deny", "Resource": "arn:aws:dms:us-east-1:152683116:endpoint:D6E37YBXTNHOA6XRQSZCUGX" } ] }

たとえば、次のコマンドは、エンドポイントの ARN を使用するポリシーが有効になっていると失敗します。

$ aws dms delete-endpoint --endpoint-arn "arn:aws:dms:us-east-1:152683116:endpoint:D6E37YBXTNHOA6XRQSZCUGX" A client error (AccessDeniedException) occurred when calling the DeleteEndpoint operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:DeleteEndpoint on resource: arn:aws:dms:us-east-1:152683116:endpoint:D6E37YBXTNHOA6XRQSZCUGX $ aws dms modify-endpoint --endpoint-arn "arn:aws:dms:us-east-1:152683116:endpoint:D6E37YBXTNHOA6XRQSZCUGX" A client error (AccessDeniedException) occurred when calling the ModifyEndpoint operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:ModifyEndpoint on resource: arn:aws:dms:us-east-1:152683116:endpoint:D6E37YBXTNHOA6XRQSZCUGX

以下のポリシーでは、タスクの ARN を使用して AWS DMS タスクへのアクセスを制限します。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "dms:*" ], "Effect": "Deny", "Resource": "arn:aws:dms:us-east-1:152683116:task:UO3YR4N47DXH3ATT4YMWOIT" } ] }

たとえば、次のコマンドは、タスクの ARN を使用するポリシーが有効になっていると失敗します。

$ aws dms delete-replication-task --replication-task-arn "arn:aws:dms:us-east-1:152683116:task:UO3YR4N47DXH3ATT4YMWOIT" A client error (AccessDeniedException) occurred when calling the DeleteReplicationTask operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:DeleteReplicationTask on resource: arn:aws:dms:us-east-1:152683116:task:UO3YR4N47DXH3ATT4YMWOIT

タグを使用したアクセスへのコントロール

AWS DMS は、お客様が定義するポリシーで利用できる一般的なキーと値ペアのセットを定義します。それ以外のタグ付けの要件はありません。AWS DMS リソースのタグ付けの詳細については、「AWS Database Migration Service でのリソースへのタグ付け」をご参照ください。

以下のリストは、AWS DMS で使用できる標準タグを示しています。

  • 法律:CurrentTime — リクエストの日付と時刻を表し、時間的基準に基づいてアクセスを制限できます。

  • 法律:EpochTime -このタグはaws:CurrentTime タグの前に。ただし、現在の時刻が Unix エポックからの経過秒数で表されることが異なります。

  • 法律:MultiFactorAuthPresent -これはリクエストが多要素認証を介して署名されたかどうかを示すブールタグです。

  • 法律:MultiFactorAuthAge — 多要素認証トークンの有効期間 (秒単位) へのアクセスを提供します。

  • aws:principaltype - 現在のリクエストに対するプリンシパルのタイプ (ユーザー、アカウント、フェデレーティッドユーザーなど) へのアクセスを提供します。

  • 法律:SourceIp -リクエストを発行するユーザーのソース IP アドレスを表します。

  • 法律:UserAgent — リソースを要求しているクライアントアプリケーションに関する情報を提供します。

  • aws:userid – リクエストを発行しているユーザーの ID へのアクセスを提供します。

  • aws:username – リクエストを発行しているユーザーの名前へのアクセスを提供します。

  • dms:InstanceClass -レプリケーションインスタンスホストのコンピューティングサイズへのアクセスを提供します。

  • dms:StorageSize -ストレージボリュームサイズ (GB) へのアクセスを提供します。

独自のタグを定義することもできます。カスタマー定義のタグは、AWS のタグ付けサービスに保持されるシンプルなキー値ペアです。このタグを AWS DMS リソース (レプリケーション インスタンス、エンドポイント、タスクを含む) に追加できます。これらのタグはポリシーの IAM「条件」ステートメントを使用してマッチングされ、特定の条件付きタグを使用して参照されます。タグキーにはプレフィックスとして「dms」、リソースタイプ、および「tag」が付きます。以下にタグ形式を示します。

dms:{resource type}-tag/{tag key}={tag value}

たとえば、タグ「stage=production」を含むレプリケーション インスタンスに対してのみ API コールの成功を許可するポリシーを定義するとします。次の条件ステートメントは、指定されたタグを持つリソースに一致します。

"Condition": { "streq": { "dms:rep-tag/stage":"production" } }

次のタグを、このポリシー条件に一致するレプリケーション インスタンスに追加します。

stage production

AWS DMS リソースに既に割り当てられているタグに加えて、特定のリソースに適用できるタグキーと値を制限するポリシーを記述することもできます。この場合、タグのプレフィックスは「req」です。

たとえば、次のポリシーステートメントは、ユーザーが特定のリソースに割り当てることができるタグを、許可される値の特定のリストに制限します。

"Condition": { "streq": { "dms:rep-tag/stage": [ "production", "development", "testing" ] } }

以下のポリシー例では、リソースタグに基づいて AWS DMS リソースへのアクセスを制限します。

次のポリシーでは、タグの値が「Desktop」、タグキーが「Env」のレプリケーション インスタンスへのアクセスを制限します。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "dms:*" ], "Effect": "Deny", "Resource": "*", "Condition": { "StringEquals": { "dms:rep-tag/Env": [ "Desktop" ] } } } ] }

次のコマンドは、タグの値が「Desktop」で、タグキーが「Env」の場合にアクセスを制限する IAM ポリシーに基づいて、成功または失敗します。

$ aws dms list-tags-for-resource --resource-name arn:aws:dms:us-east-1:152683116:rep:46DHOU7JOJYOJXWDOZNFEN --endpoint-url http://localhost:8000 { "TagList": [ { "Value": "Desktop", "Key": "Env" } ] } $ aws dms delete-replication-instance --replication-instance-arn "arn:aws:dms:us-east-1:152683116:rep:46DHOU7JOJYOJXWDOZNFEN" A client error (AccessDeniedException) occurred when calling the DeleteReplicationInstance operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:DeleteReplicationInstance on resource: arn:aws:dms:us-east-1:152683116:rep:46DHOU7JOJYOJXWDOZNFEN $ aws dms modify-replication-instance --replication-instance-arn "arn:aws:dms:us-east-1:152683116:rep:46DHOU7JOJYOJXWDOZNFEN" A client error (AccessDeniedException) occurred when calling the ModifyReplicationInstance operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:ModifyReplicationInstance on resource: arn:aws:dms:us-east-1:152683116:rep:46DHOU7JOJYOJXWDOZNFEN $ aws dms add-tags-to-resource --resource-name arn:aws:dms:us-east-1:152683116:rep:46DHOU7JOJYOJXWDOZNFEN --tags Key=CostCenter,Value=1234 A client error (AccessDeniedException) occurred when calling the AddTagsToResource operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:AddTagsToResource on resource: arn:aws:dms:us-east-1:152683116:rep:46DHOU7JOJYOJXWDOZNFEN $ aws dms remove-tags-from-resource --resource-name arn:aws:dms:us-east-1:152683116:rep:46DHOU7JOJYOJXWDOZNFEN --tag-keys Env A client error (AccessDeniedException) occurred when calling the RemoveTagsFromResource operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:RemoveTagsFromResource on resource: arn:aws:dms:us-east-1:152683116:rep:46DHOU7JOJYOJXWDOZNFEN

次のポリシーでは、タグの値が「Desktop」、タグキーが「Env」の AWS DMSエンドポイントへのアクセスを制限します。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "dms:*" ], "Effect": "Deny", "Resource": "*", "Condition": { "StringEquals": { "dms:endpoint-tag/Env": [ "Desktop" ] } } } ] }

次のコマンドは、タグの値が「Desktop」で、タグキーが「Env」の場合にアクセスを制限する IAM ポリシーに基づいて、成功または失敗します。

$ aws dms list-tags-for-resource --resource-name arn:aws:dms:us-east-1:152683116:endpoint:J2YCZPNGOLFY52344IZWA6I { "TagList": [ { "Value": "Desktop", "Key": "Env" } ] } $ aws dms delete-endpoint --endpoint-arn "arn:aws:dms:us-east-1:152683116:endpoint:J2YCZPNGOLFY52344IZWA6I" A client error (AccessDeniedException) occurred when calling the DeleteEndpoint operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:DeleteEndpoint on resource: arn:aws:dms:us-east-1:152683116:endpoint:J2YCZPNGOLFY52344IZWA6I $ aws dms modify-endpoint --endpoint-arn "arn:aws:dms:us-east-1:152683116:endpoint:J2YCZPNGOLFY52344IZWA6I" A client error (AccessDeniedException) occurred when calling the ModifyEndpoint operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:ModifyEndpoint on resource: arn:aws:dms:us-east-1:152683116:endpoint:J2YCZPNGOLFY52344IZWA6I $ aws dms add-tags-to-resource --resource-name arn:aws:dms:us-east-1:152683116:endpoint:J2YCZPNGOLFY52344IZWA6I --tags Key=CostCenter,Value=1234 A client error (AccessDeniedException) occurred when calling the AddTagsToResource operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:AddTagsToResource on resource: arn:aws:dms:us-east-1:152683116:endpoint:J2YCZPNGOLFY52344IZWA6I $ aws dms remove-tags-from-resource --resource-name arn:aws:dms:us-east-1:152683116:endpoint:J2YCZPNGOLFY52344IZWA6I --tag-keys Env A client error (AccessDeniedException) occurred when calling the RemoveTagsFromResource operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:RemoveTagsFromResource on resource: arn:aws:dms:us-east-1:152683116:endpoint:J2YCZPNGOLFY52344IZWA6I

次のポリシーでは、タグの値が「Desktop」、タグキーが「Env」のレプリケーションタスクへのアクセスを制限します。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "dms:*" ], "Effect": "Deny", "Resource": "*", "Condition": { "StringEquals": { "dms:task-tag/Env": [ "Desktop" ] } } } ] }

次のコマンドは、タグの値が「Desktop」で、タグキーが「Env」の場合にアクセスを制限する IAM ポリシーに基づいて、成功または失敗します。

$ aws dms list-tags-for-resource --resource-name arn:aws:dms:us-east-1:152683116:task:RB7N24J2XBUPS3RFABZTG3 { "TagList": [ { "Value": "Desktop", "Key": "Env" } ] } $ aws dms delete-replication-task --replication-task-arn "arn:aws:dms:us-east-1:152683116:task:RB7N24J2XBUPS3RFABZTG3" A client error (AccessDeniedException) occurred when calling the DeleteReplicationTask operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:DeleteReplicationTask on resource: arn:aws:dms:us-east-1:152683116:task:RB7N24J2XBUPS3RFABZTG3 $ aws dms add-tags-to-resource --resource-name arn:aws:dms:us-east-1:152683116:task:RB7N24J2XBUPS3RFABZTG3 --tags Key=CostCenter,Value=1234 A client error (AccessDeniedException) occurred when calling the AddTagsToResource operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:AddTagsToResource on resource: arn:aws:dms:us-east-1:152683116:task:RB7N24J2XBUPS3RFABZTG3 $ aws dms remove-tags-from-resource --resource-name arn:aws:dms:us-east-1:152683116:task:RB7N24J2XBUPS3RFABZTG3 --tag-keys Env A client error (AccessDeniedException) occurred when calling the RemoveTagsFromResource operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:RemoveTagsFromResource on resource: arn:aws:dms:us-east-1:152683116:task:RB7N24J2XBUPS3RFABZTG3

暗号化キーの設定と AWS KMS のアクセス許可の指定

AWS DMS では、レプリケーション インスタンスによって使用されるストレージと、エンドポイントの接続情報を暗号化します。レプリケーション インスタンスで使用されるストレージを暗号化するために、AWS DMS では AWS アカウントに固有の AWS Key Management Service (AWS KMS) キーを使用します。このキーは、AWS KMS で表示し、管理できます。アカウント (aws/dms) でデフォルトの KMS キーを使用できます。あるいは、カスタム KMS キーを作成できます。既存の KMS キーがある場合、暗号化にそのキーを使用することもできます。

注記

暗号化キーとして使用するカスタムまたは既存の AWS KMS キーは、対称キーである必要があります。AWS DMS では、非対称暗号化キーの使用がサポートされていません。対称キーと非対称キーの使用詳細については、AWS Key Management Service デベロッパーガイドの「https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html」をご参照ください。

レプリケーション インスタンスの初回起動時に、 レプリケーション インスタンス作成ページのアドバンストセクションで、カスタム KMS キーを選択していない場合は、デフォルトの KMS キー (aws/dms) が作成されます。デフォルトの KMS キーを使用する場合、移行用の IAM ユーザーアカウントにはアクセス許可として kms:ListAliaseskms:DescribeKey のみを付与する必要があります。デフォルトの KMS キーの使用に関する詳細については、「AWS DMS の使用に必要な IAM アクセス許可」をご参照ください。

カスタム KMS キーを使用するには、次のオプションの 1 つを使用して、カスタム KMS キーにアクセス許可を割り当てます。

  • 移行に使用する IAM ユーザーアカウントを、AWS KMS カスタムキーのキー管理者あるいはキーユーザーとして追加します。これにより、IAM ユーザーアカウントに必要な AWS KMS 権限が確実に付与されます。このアクションは、AWS DMS を使用するために IAM ユーザーアカウントに付与する IAM のアクセス許可に追加されます。キーユーザーを許可する詳しい方法については、AWS Key Management Service デベロッパーガイド の「KMS キーの使用をユーザーに許可する」をご参照ください。

  • カスタム KMS キーに対するキー管理者あるいはキーユーザーとして IAM ユーザーアカウントを追加したくない場合、AWS DMS を使用するために IAM ユーザーアカウントに付与する必要がある IAM のアクセス許可に、次のアクセス許可を追加で付与してください。

    { "Effect": "Allow", "Action": [ "kms:ListAliases", "kms:DescribeKey", "kms:CreateGrant", "kms:Encrypt", "kms:ReEncrypt*" ], "Resource": "*" },

AWS DMS には KMS キーエイリアスも使用できます。独自の AWS KMS キーを作成して KMS キーへのユーザーアクセスを許可する方法の詳細については、「AWS KMS デベロッパーガイド」をご参照ください。

KMS キー識別子を指定しない場合、AWS DMS はデフォルトの暗号化キーを使用します。AWS KMS は、AWS アカウントの AWS DMS 用にデフォルトの暗号化キーを作成します。AWS アカウントには AWS リージョンごとにデフォルトの暗号化キーがあります。

AWS DMS リソースの暗号化に使用される AWS KMS キーを管理するには、AWS Key Management Service を使用します。AWS KMS は、安全で可用性の高いハードウェアとソフトウェアを組み合わせて、クラウド向けに拡張されたキー管理システムを提供します。AWS KMS を使用して、暗号化キーを作成し、それらのキーの使用方法を制御するポリシーを定義できます。

AWS KMS は AWS Management Console にあります。

  1. AWS Management Console にサインインし、AWS Key Management Service (AWS KMS) コンソール (https://console.aws.amazon.com/kms) を開きます。

  2. AWS リージョン を変更するには、ページの右上隅にあるリージョンセレクターを使用します。

  3. AWS KMS キーを操作するには、次のいずれかのオプションを選択します。

    • AWS によって作成および管理されるアカウントのキーを表示するには、ナビゲーションペインで [AWS マネージドキー] を選択します。

    • ユーザーが作成および管理するアカウント内のキーを表示するには、ナビゲーションペインで [Customer managed keys] (カスタマーマネージドキー) を選択します。

AWS KMS は AWS CloudTrail をサポートしているため、キーの使用を監査して、キーが適切に使用されていることを確認できます。AWS KMS キーは、AWS DMS および対応している AWS のサービス (Amazon RDS、Amazon S3、Amazon Redshift、Amazon EBS など) で使用できます。

また、次の AWS DMS エンドポイントでターゲットデータを暗号化するためだけにカスタム AWS KMS キーを作成することができます。

KMS キーを使用して AWS DMS リソースを作成した後に、リソースの暗号化キーを変更することはできません。AWS DMS リソースを作成する場合は、必ず暗号化キー要件を調べてください。

AWS Database Migration Service のネットワークセキュリティ

AWS Database Migration Service を使用するときに作成するネットワークのセキュリティ要件は、ネットワークの設定方法によって異なります。AWS DMS のネットワークセキュリティの一般的なルールは次のとおりです。

  • レプリケーション インスタンスは、ソースとターゲットのエンドポイントにアクセスできる必要があります。レプリケーション インスタンスのセキュリティグループには、データベースポートでデータベースエンドポイントへの送信をインスタンスに許可するネットワーク ACL またはルールが必要です。

  • データベースエンドポイントには、レプリケーション インスタンスからの受信アクセスを許可するネットワーク ACL およびセキュリティグループルールを含める必要があります。これは、構成に応じて、レプリケーション インスタンスのセキュリティグループ、プライベート IP アドレス、パブリック IP アドレス、または NAT ゲートウェイのパブリックアドレスを使用して実現できます。

  • ネットワークで VPN トンネルが使用されている場合、NAT ゲートウェイとして機能する Amazon EC2 インスタンスは、レプリケーション インスタンスにそのゲートウェイを通じたトラフィックの送信を許可するセキュリティグループを使用する必要があります。

デフォルトでは、AWS DMS レプリケーション インスタンスにより使用される VPC セキュリティグループに、すべてのポートで 0.0.0.0/0 への送信を許可するルールがあります。このセキュリティグループを変更するか、独自のセキュリティグループを使用する場合、少なくとも、対応するデータベースポートでソースおよびターゲットエンドポイントへの送信が許可される必要があります。

データベース移行に使用できるネットワーク構成には、それぞれ固有のセキュリティ上の考慮事項があります。

  • すべてのデータベース移行コンポーネントが 1 つの VPC にある設定 - エンドポイントで使用されるセキュリティグループは、データベースポートでレプリケーション インスタンスからの進入を許可する必要があります。レプリケーション インスタンスによって使用されるセキュリティグループでエンドポイントに侵入可能なことを確認するかまたは、エンドポイントにより使用されるセキュリティグループに、レプリケーション インスタンスのプライベート IP アドレスにアクセスを許可するセキュリティルールを作成できます。

  • 複数の VPC での設定 - レプリケーション インスタンスで使用されるセキュリティグループには、VPC 範囲とデータベースの DB ポートに関するルールが必要です。

  • AWS Direct Connect または VPN を使用した VPC へのネットワークの設定 - VPC からオンプレミス VPN へのトンネルに向かうトラフィックを許可する VPN トンネル。この設定では、特定の IP アドレスまたは範囲に向かうトラフィックを、VPC からオンプレミス VPN へのトラフィックをブリッジできるホストに送信するルーティングルールが VPC に含まれています。この場合、レプリケーション インスタンスのプライベート IP アドレスまたはセキュリティグループから NAT インスタンスへのトラフィックを許可する必要がある独自のセキュリティグループ設定が NAT ホストに含まれています。

  • インターネットを使用した VPC へのネットワークの設定 - VPC セキュリティグループには、VPC に向かわないトラフィックをインターネットゲートウェイに送信するルーティングルールが含まれている必要があります。この設定では、エンドポイントへの接続がレプリケーション インスタンス上のパブリック IP アドレスから行われているように見えます。

  • VPC 内に存在しない RDS DB インスタンスで VPC 内の DB インスタンスへの設定方法 ClassicLink-ソースまたはターゲットの Amazon RDS DB インスタンスが VPC 内になく、セキュリティグループをレプリケーションインスタンスが存在する VPC と共有していない場合、プロキシサーバーを設定し、 ClassicLink ソースデータベースとターゲットデータベースに接続する

  • ソース エンドポイントがレプリケーション インスタンスで使用されている VPC の外にあり、NAT のゲートウェイを使用している - 単一の Elastic network interface にバインドされた単一の Elastic IP アドレスを使用してネットワークアドレス変換 (NAT) ゲートウェイを設定できます。次に、この Elastic network interface は NAT 識別子 (nat-#####) を受け取ります。インターネットゲートウェイではなくその NAT ゲートウェイへのデフォルトルートが VPC に含まれている場合、レプリケーション インスタンスはインターネットゲートウェイのパブリック IP アドレスを使用してデータベースエンドポイントに接続しているように見えます。この場合、VPC 外のデータベースエンドポイントへの進入は、レプリケーション インスタンスのパブリック IP アドレスではなく NAT アドレスからの進入を許可する必要があります。

  • 非 RDBMS エンジンの VPC エンドポイント - AWS DMSは、非 RDBMS エンジンの VPC エンドポイントをに対応しません。

AWS Database Migration Service での SSL の使用

Secure Sockets Layer (SSL) を使用することで、ソースおよびターゲットエンドポイントへの接続を暗号化できます。これを行うには、AWS DMS マネジメントコンソールまたは AWS DMS API を使用してエンドポイントに証明書を割り当てます。AWS DMS コンソールを使用して証明書を管理することもできます。

どのデータベースも同じ方法で SSL を使用しているとは限りません。Amazon Aurora MySQL 互換エディションは、SSL のエンドポイントとして、サーバー名、クラスター内のプライマリ インスタンスのエンドポイントを使用します。Amazon Redshift エンドポイントではすでに SSL 接続が使用されているため、AWS DMS によりセットアップされた SSL 接続は必要ありません。Oracle エンドポイントには追加の手順が必要です。詳細については、「Oracle エンドポイントでの SSL のサポート」をご参照ください。

エンドポイントに証明書を割り当てるには、ルート証明書を指定するか、エンドポイントにデプロイされるサーバー SSL 証明書の署名に使用された、ルートに導く (証明書バンドルとして) 中間 CA 証明書チェーンを指定します。証明書は、PEM 形式の X509 ファイルとしてのみ受け入れられます。証明書をインポートすると、エンドポイントにその証明書を指定するために使用できる Amazon リソースネーム (ARN) を受け取ります。Amazon RDS を使用する場合は、Amazon RDS によってホストされている rds-combined-ca-bundle.pem ファイルで提供されているルート CA と証明書バンドルをダウンロードできます。このファイルのダウンロード方法については、Amazon RDS ユーザーガイド‭ の「SSL/TLS を使用した DB インスタンス接続の暗号化」をご参照ください。

SSL 証明書認証に使用する SSL モードは、複数の中から選択できます。

  • none – 接続は暗号化されていません。このオプションは安全ではありませんが、必要なオーバーヘッドが小さくなります。

  • require – 接続は SSL (TLS) を使用して暗号化されますが、CA 検証は行われません。このオプションは安全性が高まりますが、必要なオーバーヘッドが増えます。

  • verify-ca – 接続は暗号化されています。このオプションは安全性が高まりますが、必要なオーバーヘッドが増えます。このオプションでは、サーバー証明書が認証されます。

  • verify-full – 接続は暗号化されています。このオプションは安全性が高まりますが、必要なオーバーヘッドが増えます。このオプションでは、サーバー証明書が認証され、サーバーのホスト名が証明書のホスト名属性と一致することが確認されます。

すべての SSL モードがすべてのデータベースエンドポイントで機能するわけではありません。次の表は、各データベースエンジンでサポートされている SSL モードを示しています。

DB エンジン

なし

require

verify-ca

verify-full

MySQL/MariaDB/Amazon Aurora MySQL

デフォルト サポート外 サポート対象 サポート対象

Microsoft SQL Server

デフォルト サポート対象 サポート外 サポート対象

PostgreSQL

デフォルト サポート対象 サポート対象 サポート対象

Amazon Redshift

デフォルト SSL が有効でない SSL が有効でない SSL が有効でない

Oracle

デフォルト サポート外 サポート対象 サポート外

SAP ASE

デフォルト SSL が有効でない SSL が有効でない サポート対象

MongoDB

デフォルト サポート対象 サポート外 サポート対象

Db2 LUW

デフォルト サポート外 サポート対象 サポート外

z/OS 用 Db2

デフォルト サポート外 サポート対象 サポート外
注記

DMS コンソールまたは API の SSL モードオプションは、Kinesis や DynamoDB などの一部のデータ ストリーミングおよび NoSQL サービスには適用されません。これらはデフォルトで安全なため、DMS は SSL モードの設定が none と等しくなっていることを示します (SSL モード=なし)。SSL を使用するために、エンドポイントに追加の設定は必要ありません。例えば、Kinesis をターゲット エンドポイントとして使用する場合、デフォルトでセキュリティで保護されます。Kinesis への API コールはすべて SSL を使用するため、DMS エンドポイントに追加の SSL オプションは不要です。DMS が Kinesis Data Stream への接続時にデフォルトで使用する HTTPS プロトコルを使用して、SSL エンドポイントを介して安全にデータを保存し取得できます。

AWS DMS で SSL を使用する場合の制限

AWS DMS で SSL を使用する際の制限事項を次に示します。

  • Amazon Redshift ターゲット エンドポイントへの SSL 接続には対応していません。AWS DMS は Amazon S3 バケットを使用してデータを Amazon Redshift データベースに転送します。この転送は、Amazon Redshift によってデフォルトで暗号化されます。

  • SSL が有効な Oracle エンドポイントで変更データキャプチャ (CDC) タスクを実行すると、SQL タイムアウトが発生することがあります。CDC カウンターに想定の数値が反映されないという問題がある場合は、タスク設定の ChangeProcessingTuning セクションの MinimumTransactionSize パラメータに小さい値を設定します。最低値 100 から始めることができます。MinimumTransactionSize パラメータの詳細については、「変更処理のチューニング設定」をご参照ください。

  • インポートできる証明書の形式は、.pem 形式および .sso(Oracle ウォレット)形式のみです。

  • 場合によっては、サーバーの SSL 証明書が中間認証局 (CA) によって署名されていることがあります。その場合は、中間 CA からルート CA までの証明書チェーン全体が 1 つの.pem ファイルとしてインポートされていることを確認します。

  • サーバーで自己署名証明書を使用している場合、SSL モードとして [require] を選択します。require SSL モードでは、サーバーの SSL 証明書が暗黙的に信頼され、証明書が CA により署名されたかどうかの検証は試行されません。

証明書の管理

DMS コンソールを使用すると、SSL 証明書を表示および管理できます。DMS コンソールを使用して証明書をインポートすることもできます。


                     AWS Database Migration ServiceSSL 証明書の管理

MySQL 互換、PostgreSQL、または SQL Server のエンドポイントでの SSL の有効化

新しく作成したエンドポイントまたは既存のエンドポイントに SSL 接続を追加できます。

SSL を使用する AWS DMS エンドポイントを作成するには

  1. にサインインします。AWS Management ConsoleのオープンAWS DMSのコンソールhttps://console.aws.amazon.com/dms/v2/

    AWS Identity and Access Management (IAM) ユーザーとしてサインインしている場合は、AWS DMS にアクセスするための適切なアクセス許可があることを確認します。データベース移行に必要なアクセス許可の詳細については、「AWS DMS の使用に必要な IAM アクセス許可」をご参照ください。

  2. ナビゲーションペインで [Certificates] を選択します。

  3. [Import Certificate] を選択します。

  4. エンドポイントへの接続の暗号化に使用する証明書をアップロードします。

    注記

    エンドポイントの作成時や変更時に [Create database endpoint] (データベース エンドポイント作成) ページの[Add new CA certificate] (新規 CA 証明書追加) を選択することにより、 AWS DMS コンソールを使用して証明書をアップロードすることもできます。

    ターゲットとして Aurora サーバーレスの場合は、Aurora サーバーレスでの TLS/SSL の使用に記載されている証明書を取得します。

  5. ステップ 2: ソースとターゲットのエンドポイントを指定するでの説明に従って、エンドポイントを作成します。

SSL を使用できるように既存の AWS DMS エンドポイントを変更するには

  1. にサインインします。AWS Management ConsoleのオープンAWS DMSのコンソールhttps://console.aws.amazon.com/dms/v2/

    IAM ユーザーとしてサインインしている場合は、AWS DMS にアクセスするための適切なアクセス許可があることを確認します。データベース移行に必要なアクセス許可の詳細については、「AWS DMS の使用に必要な IAM アクセス許可」をご参照ください。

  2. ナビゲーションペインで [Certificates] を選択します。

  3. [Import Certificate] を選択します。

  4. エンドポイントへの接続の暗号化に使用する証明書をアップロードします。

    注記

    エンドポイントの作成時や変更時に [Create database endpoint] (データベース エンドポイント作成) ページの[Add new CA certificate] (新規 CA 証明書追加) を選択することにより、 AWS DMS コンソールを使用して証明書をアップロードすることもできます。

  5. ナビゲーションペインで、[Endpoints] を選択し、変更するエンドポイントを選択して [Modify] を選択します。

  6. SSL モードの値を選択します。

    [verify-ca] モードまたは [verify-full] モードを選択した場合は、次に示すように、使用する証明書を [CA 証明書] に指定します。

    
                             AWS Database Migration ServiceSSL 証明書の管理

  7. [変更] を選択します。

  8. エンドポイントが変更されている場合は、エンドポイントを選択して [接続のテスト] を選択し、SSL 接続が機能しているかどうかを調べます。

ソースおよびターゲットエンドポイントを作成したら、これらのエンドポイントを使用するタスクを作成します。タスクの作成に関する詳細については、「ステップ 3: タスクを作成してデータを移行する」をご参照ください。

データベースのパスワードの変更

ほとんどの状況では、ソースまたはターゲットエンドポイント用のデータベースのパスワードを変更するのは簡単です。移行またはレプリケーションタスクで現在使用しているエンドポイント用のデータベースのパスワードを変更する必要がある場合、そのプロセスは少し複雑になります。以下の手順は、その方法を示しています。

移行またはレプリケーションタスクでエンドポイント用のデータベースのパスワードを変更するには

  1. にサインインします。AWS Management ConsoleのオープンAWS DMSのコンソールhttps://console.aws.amazon.com/dms/v2/

    IAM ユーザーとしてサインインしている場合は、AWS DMS にアクセスするための適切なアクセス許可があることを確認します。必要なアクセス権限の詳細については、「AWS DMS の使用に必要な IAM アクセス許可」をご参照ください。

  2. ナビゲーションペインで、[Tasks (タスク)] を選択します。

  3. データベースのパスワードを変更するエンドポイントを使用するタスクを選択してから、[Stop] を選択します。

  4. タスクが停止されている間、データベースの操作に使用するネイティブツールを使用して、エンドポイント用のデータベースのパスワードを変更できます。

  5. DMS マネジメントコンソールに戻り、ナビゲーションペインから [Endpoints] を選択します。

  6. パスワードを変更したデータベースのエンドポイントを選択してから、[Modify] を選択します。

  7. [Password] ボックスに新しいパスワードを入力し、[Modify] を選択します。

  8. ナビゲーションペインから [Tasks] を選択します。

  9. 先ほど停止したタスクを選択してから、[Start/Resume] を選択します。

  10. タスクを続行する方法に応じて、[Start] または [Resume] のいずれかを選択してから、[Start task] を選択します。