翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 DMSIAM ユーザーとしてサインインしている場合、を使用するには適切なアクセス許可が必要になります。たとえば、IAM を使用して、いずれのユーザーが DB インスタンスおよびクラスターの作成、情報入手、変更、削除、リソースのタグ付け、セキュリティグループの変更を許可されるかを決定します。IAM の詳細については、での 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 KMSAmazon S3 および Amazon Redshift ターゲットエンドポイントの保存中のターゲットデータを保護するための暗号化キー。詳細については、「暗号化キーの設定と AWS KMS のアクセス許可の指定」を参照してください。
-
AWS DMSは、常に Amazon VPC サービスに基づいてレプリケーションインスタンスを Virtual Private Cloud (VPC) に作成し、ネットワークアクセス制御を最大限に拡張します。DB インスタンスとインスタンスクラスターには、レプリケーションインスタンスと同じ VPC を使用するか、このレベルのアクセスコントロールに一致させるために追加の VPC を使用します。使用する各 Amazon VPC は、すべてのポートですべてのトラフィックが VPC を退出 (送信) するのを許可するルールを持つセキュリティグループに関連付ける必要があります。このアプローチでは、ソースおよびターゲットデータベースエンドポイントで適切な受信が有効になっている限り、レプリケーションインスタンスからそれらのエンドポイントへの通信が許可されます。
AWS DMS で使用可能なネットワーク設定の詳細については、「レプリケーションインスタンスのためのネットワークのセットアップ」を参照してください。VPC での DB インスタンスまたはインスタンスクラスターの作成については、次の Amazon データベースのセキュリティとクラスター管理のドキュメントを参照してください。AWSドキュメンテーション。AWS DMS でサポートされるネットワーク設定の詳細については、「レプリケーションインスタンスのためのネットワークのセットアップ」を参照してください。
-
データベース移行ログを表示するには、使用している IAM ロールに適切な Amazon CloudWatch Logs アクセス許可が必要です。AWS DMS のログ作成の詳細については、「Amazon CloudWatch を使用したレプリケーションタスクのモニタリング」を参照してください。
トピック
- AWS Database Migration Service でのデータ保護
- AWS Database Migration Service のためのアイデンティティおよびアクセス管理
- AWS Database Migration Service のコンプライアンス検証
- AWS Database Migration Service での耐障害性
- AWS Database Migration Serviceでのインフラストラクチャセキュリティ
- AWS DMS の使用に必要な IAM アクセス許可
- AWS CLI と AWS DMS API で使用する IAM ロールの作成
- リソース名とタグを使用したファイングレインアクセスコントロール
- 暗号化キーの設定と AWS KMS のアクセス許可の指定
- AWS Database Migration Service のネットワークセキュリティ
- AWS Database Migration Service での SSL の使用
- データベースのパスワードの変更
AWS Database Migration Service でのデータ保護
データ暗号化
サポートされている AWS DMS ターゲットエンドポイントのデータリソースの暗号化を有効にできます。AWS DMS では、AWS DMS との接続と、AWS DMS とすべてのソースエンドポイントおよびターゲットエンドポイントとの間の接続も暗号化されます。さらに、この暗号化を有効にするために、AWS DMS およびサポートされているターゲットエンドポイントが使用するキーも管理できます。
保管中の暗号化
AWS DMSは保存時の暗号化をサポートしており、では、サポート対象にコピーする前に Amazon S3 にレプリケートされたデータをプッシュするために使用するサーバー側の暗号化モードを指定できます。AWS DMSターゲットエンドポイント。この暗号化モードは、エンドポイントの追加の接続属性 encryptionMode
を設定することで指定できます。これならencryptionMode
設定は KMS キー暗号化モードを指定します。カスタムを作成することもできます。AWS KMSキーは、次のターゲットデータを暗号化するためだけにキーを使用します。AWS DMSターゲットエンドポイント:
-
Amazon Redshift — の設定の詳細については
encryptionMode
「」を参照してください。のターゲットとして Amazon Redshift を使用する場合の追加の接続属性AWS DMS。カスタム作成の詳細については、「」を参照してください。AWS KMS暗号化キー、「」を参照してください。作成と使用AWS KMSAmazon Redshift ターゲットデータを暗号化するためのキー。 -
Amazon S3 — 設定の詳細については、
encryptionMode
「」を参照してください。AWS DMS のターゲットとして Amazon S3 を使用する場合の追加接続属性。カスタム作成の詳細については、「」を参照してください。AWS KMS暗号化キー、「」を参照してください。Amazon S3 ターゲットオブジェクトを暗号化する AWS KMS キーの作成。
転送中の暗号化
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 Identity and Access のトラブルシューティング」を参照してください。
[サービス管理者] - 社内の 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
使用する認証方法を問わず、追加のセキュリティ情報の提供を要求される場合もあります。例えば、AWS では多要素認証 (MFA) を使用してアカウントのセキュリティを高めることを推奨しています。詳細については、『IAM ユーザーガイド』の「AWS での多要素認証 (MFA) の使用」を参照してください。
AWS アカウント ルートユーザー
最初の作成時AWS アカウントの場合は、すべてのユーザーに完全なアクセス権限を持つシングルサインインアイデンティティで始めます。AWS のサービスおよびアカウントのリソース。このアイデンティティは AWS アカウント ルートユーザー と呼ばれ、アカウントの作成に使用した E メールアドレスとパスワードでサインインすることによってアクセスできます。強くお勧めするのは、日常的なタスクには、それが管理者タスクであっても、ルートユーザーを使用しないことです。代わりに、初期の IAM ユーザーを作成するためにのみ、ルートユーザーを使用するというベストプラクティスに従います。その後、ルートユーザーの認証情報を安全な場所に保管し、それらを使用して少数のアカウントおよびサービス管理タスクのみを実行します。
IAM ユーザーとグループ
IAM ユーザーは、単一のユーザーまたはアプリケーションに対する特定の許可を持つ AWS アカウント 内のアイデンティティです。IAM ユーザーは、ユーザー名とパスワード、アクセスキーのセットなど、長期的な認証情報を持つことができます。アクセスキーの生成方法の詳細については、『IAM ユーザーガイド』の「IAM ユーザーのアクセスキーの管理」を参照してください。IAM ユーザーにアクセスキーを生成するとき、必ずキーペアを表示して安全に保存してください。後になって、シークレットアクセスキーを回復することはできません。新しいアクセスキーペアを生成する必要があります。
IAM グループ は、IAM ユーザーのコレクションを指定するアイデンティティです。グループとしてサインインすることはできません。グループを使用して、一度に複数のユーザーに対してアクセス許可を指定できます。多数の組のユーザーがある場合、グループを使用すると管理が容易になります。例えば、IAMAdminsという名前のグループを設定して、そのグループに IAM リソースを管理するアクセス許可を与えることができます。
ユーザーは、ロールとは異なります。ユーザーは 1 人の特定の人またはアプリケーションに一意に関連付けられますが、ロールはそれを必要とする任意の人が引き受けるようになっています。ユーザーには永続的な長期の認証情報がありますが、ロールではテンポラリ認証情報が利用できます。詳細については、『IAM ユーザーガイド』の「IAM ユーザーの作成が適している場合 (ロールではなく)」を参照してください。
IAM ロール
IAM ロール は、特定のアクセス許可を持つ、AWS アカウント 内のアイデンティティです。これは IAM ユーザーに似ていますが、特定のユーザーには関連付けられていません。ロールを切り替えることによって、AWS Management Consoleで IAM ロールをテンポラリに引き受けることができます。ロールを引き受けるには、AWS CLI または AWS API 演算を呼び出すか、カスタム URL を使用します。ロールを使用する方法の詳細については、『IAM ユーザーガイド』の「IAM ロールの使用」を参照してください。
IAM ロールとテンポラリ認証情報は、次の状況で役立ちます。
-
テンポラリ IAM ユーザーアクセス許可 - IAM ユーザーは、特定のタスクに対して複数の異なるアクセス許可をテンポラリに IAM ロールで引き受けることができます。
-
フェデレーティッドユーザーアクセス - IAM ユーザーを作成する代わりに、AWS Directory Service、エンタープライズユーザーディレクトリ、またはウェブ ID プロバイダーからの既存のアイデンティティを使用できます。このようなユーザーは フェデレーティッドユーザー と呼ばれます。AWS では、ID プロバイダーを通じてアクセスがリクエストされたとき、フェデレーティッドユーザーにロールを割り当てます。フェデレーティッドユーザーの詳細については、『IAM ユーザーガイド』の「フェデレーティッドユーザーとロール」を参照してください。
-
クロスアカウントアクセス - IAM ロールを使用して、自分のアカウントのリソースにアクセスすることを別のアカウントの人物 (信頼済みプリンシパル) に許可できます。ロールは、クロスアカウントアクセスを許可する主な方法です。しかし、いくつかのAWS のサービスでは、(ロールをプロキシとして使用する代わりに) リソースにポリシーを直接アタッチできます。クロスアカウントアクセスでのロールとリソースベースのポリシーの違いの詳細については、IAM ユーザーガイドの IAM ロールとリソースベースのポリシーとの相違点を参照してください。
-
クロスサービスアクセス— ある数AWS のサービス他の機能を使用するAWS のサービス。例えば、サービスで呼び出しを行う場合、そのサービスでは Amazon EC2 でアプリケーションを実行したり、Amazon S3 にオブジェクトを保存したりするのが一般的です。サービスは、呼び出し元プリンシパルのアクセス許可、サービスロール、またはサービスリンクロールを使用してこれを行う場合があります。
-
[Principal permissions] (プリンシパル許可) – IAM ユーザーまたはロールを使用して AWS でアクションを実行する場合、そのユーザーはプリンシパルとみなされます。ポリシーは、プリンシパルにアクセス許可を付与します。一部のサービスを使用する場合、別のサービスで別のアクションをトリガーするアクションを実行することがあります。この場合、両方のアクションを実行するための許可が必要です。アクションがポリシーで追加の依存アクションを必要とするかどうかを確認するには、サービス認証リファレンス の AWS Database Migration Service のアクション、リソース、および条件キーを参照してください。
-
サービスロール – サービスがユーザーに代わってアクションを実行するために引き受ける IAM ロール です。IAM 管理者は、IAM 内からサービスロールを作成、変更、削除できます。詳細については、「」を参照してください。にアクセス許可を委任するロールの作成AWS のサービスのIAM ユーザーガイド。
-
サービスにリンクされたロール— サービスリンクロールは、のサービスロールの一種で、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 でのアクセスは、ポリシーを作成し、それらを IAM アイデンティティまたは AWS リソースに添付することで制御できます。ポリシーは AWS のオブジェクトであり、ID やリソースに関連付けて、これらのアクセス許可を定義します。ルートユーザーまたは IAM ユーザーとしてサインインすることも、IAM ロールを引き受けることもできます。その後リクエストを行うと、AWS が関連するアイデンティティベースまたはリソースベースのポリシーを評価します。ポリシーでのアクセス許可により、リクエストが許可されるか拒否されるかが決まります。大半のポリシーは JSON ドキュメントとして AWS に保存されます。JSON ポリシードキュメントの構造と内容の詳細については、『IAM ユーザーガイド』の「JSON ポリシー概要」を参照してください。
管理者は AWS JSON ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どのプリンシパルがどのリソースに対してどのような条件下でアクションを実行できるかということです。
すべての IAM エンティティ (ユーザーまたはロール) は、アクセス許可のない状態からスタートします。言い換えると、デフォルト設定では、ユーザーは何もできず、自分のパスワードを変更することすらできません。何かを実行するアクセス許可をユーザーに付与するには、管理者がユーザーにアクセス許可ポリシーを添付する必要があります。また、管理者は、必要なアクセス許可があるグループにユーザーを追加できます。管理者がグループにアクセス許可を付与すると、そのグループ内のすべてのユーザーにこれらのアクセス許可が付与されます。
IAM ポリシーは、演算の実行方法を問わず、アクションのアクセス許可を定義します。例えば、iam:GetRole
アクションを許可するポリシーがあるとします。このポリシーがあるユーザーは、AWS Management Console、AWS CLI、または AWS API からロールの情報を取得できます。
アイデンティティベースポリシー
アイデンティティベースポリシーは、IAM user ユーザー、ユーザーのグループ、ロールなど、アイデンティティに添付できる JSON アクセス許可ポリシードキュメントです。これらのポリシーは、ユーザーとロールが実行できるアクション、リソース、および条件を制御します。アイデンティティベースのポリシーを作成する方法については、『IAM ユーザーガイド』の「IAM ポリシーの作成」を参照してください。
アイデンティティベースのポリシーは、さらにインラインポリシーまたはマネージドポリシーに分類できます。インラインポリシーは、単一のユーザー、グループ、またはロールに直接埋め込まれています。管理ポリシーは、AWS アカウント 内の複数のユーザー、グループ、およびロールに添付できるスタンドアロンポリシーです。管理ポリシーには、AWS 管理ポリシーとカスタマー管理ポリシーが含まれます。マネージドポリシーまたはインラインポリシーのいずれかを選択する方法については、「IAM ユーザーガイド」の「マネージドポリシーとインラインポリシーの比較」を参照してください。
リソースベースのポリシー
リソースベースのポリシーは、リソースに添付する JSON ポリシードキュメントです。リソースベースのポリシーの例は、IAM ロールの信頼ポリシー および Amazon S3 バケットポリシーです。リソースベースのポリシーをサポートするサービスでは、サービス管理者はポリシーを使用して特定のリソースへのアクセスを制御できます。ポリシーが添付されているリソースの場合、ポリシーは、指定されたプリンシパルがそのリソースに対して実行できるアクションと条件を定義します。リソースベースのポリシーで、プリンシパルを指定する必要があります。プリンシパルには、アカウント、ユーザー、ロール、フェデレーティッドユーザー、またはAWS のサービス。
リソースベースのポリシーは、そのサービス内にあるインラインポリシーです。リソースベースのポリシーで IAM の AWS 管理ポリシーを使用することはできません。
アクセスコントロールリスト (ACL)
アクセスコントロールリスト (ACL) は、どのプリンシパル (アカウントメンバー、ユーザー、またはロール) がリソースにアクセスするための許可を持つかを制御します。ACL はリソースベースのポリシーに似ていますが、JSON ポリシードキュメント形式は使用しません。
Amazon S3、AWS WAF、および Amazon VPC は、ACL をサポートするサービスの例です。ACL の詳細については、「Amazon Simple Storage Service デベロッパーガイド」 の 「アクセスコントロールリスト (ACL) の概要」を参照してください。
その他のポリシータイプ
AWS では、別のあまり一般的ではないポリシータイプもサポートしています。これらのポリシータイプでは、より一般的なポリシータイプで付与された最大の許可を設定できます。
-
許可の境界 - 許可の境界は、ID ベースのポリシーが IAM エンティティ (IAM ユーザーまたはロール) に付与できる許可の上限を設定する高度な機能です。エンティティの許可の境界を設定できます。結果として得られる許可は、エンティティの アイデンティティベースポリシーとその許可の境界の共通部分です。
Principal
フィールドでユーザーまたはロールを指定するリソースベースのポリシーは、許可の境界では制限されません。これらのポリシーのいずれかを明示的に拒否した場合、その許可は無効になります。許可の境界の詳細については、『IAM ユーザーガイド』の「IAM エンティティの許可の境界」を参照してください。 -
[Service control policies (SCPs)] (サービスコントロールポリシー 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 CreateReplicationTask
API オペレーションでは、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 つのデータベースエンドポイントリソースに接続するため、IAM ユーザーは、ソースエンドポイントを読み取るアクセス許可と、ターゲットエンドポイントに書き込むアクセス許可を持っている必要があります。複数のリソースを単一のステートメントで指定するには、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 暗号化キーにアタッチされています。このポリシーでは、サポートされているターゲットエンドポイントで移行されたデータを暗号化できるプリンシパルエンティティ(アカウント、ユーザー、ロール、フェデレーティッドユーザー)を定義します。
サポートされているターゲットエンドポイント用に作成する暗号化キーにリソースベースのポリシーをアタッチする方法については、「作成と使用AWS KMSAmazon Redshift ターゲットデータを暗号化するためのキー」および「Amazon S3 ターゲットオブジェクトを暗号化する AWS KMS キーの作成」を参照してください。
例
AWS DMS のリソースベースのポリシーの例については、「リソースベースのポリシーの例 (AWS KMS)」を参照してください。
AWS DMS タグに基づいた承認
タグを AWS DMS リソースにアタッチすることも、AWS DMS へのリクエストでタグを渡すこともできます。タグに基づいてアクセスを制御するには、タグ情報を条件エレメントを使用するポリシーのdms:ResourceTag/
,key-name
aws: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 アクセス。
-
Amazon DynamoDB がターゲット詳細については、「」を参照してください。のターゲットとして DynamoDB を使用する場合の前提条件AWS Database Migration Service。
-
OpenSearchがターゲット詳細については、「」を参照してください。Amazon を使用するための前提条件 OpenSearch のターゲットとしてのサービスAWS Database Migration Service。
-
Amazon Kinesis がターゲット詳細については、「」を参照してください。AWS Database Migration Service のターゲットとして Kinesis ータストリームを使用する場合の前提条件。
-
Amazon Redshift をターゲットとして — 指定したロールを作成する必要があるのは、ターゲットデータを暗号化するカスタム KMS 暗号化キーを作成する場合か、中間タスクストレージを保持するカスタム S3 バケットを指定する場合のみです。詳細については、作成と使用AWS KMSAmazon Redshift ターゲットデータを暗号化するためのキー または Amazon S3 バケット設定 を参照してください。
-
Amazon S3 をソースまたはターゲットとして — 詳細については、「」を参照してください。のソースとして Amazon S3 を使用する場合の前提条件AWS DMSまたはターゲットとして Amazon S3 を使用するための前提条件。
たとえば、S3 ソースエンドポイントからデータを読み取る場合や、S3 ターゲットエンドポイントにデータをプッシュする場合は、これらのエンドポイントオペレーションごとに S3 にアクセスするための前提条件としてサービスロールを作成する必要があります。
-
-
を使用するために必要な権限を持つロールAWS CLIそしてAWSDMS API — 作成する必要がある IAM ロールは 2 つあります。
dms-vpc-role
そしてdms-cloudwatch-logs-role
。Amazon Redshift をターゲットデータベースとして使用する場合は、IAM ロールも作成して追加する必要があります。dms-access-for-endpoint
[()]AWSアカウント. 詳細については、「AWS CLI と AWS DMS API で使用する IAM ロールの作成」を参照してください。
AWS DMS で IAM ロールを選択
♪AWS CLIまたはAWSDMS API をデータベース移行するには、特定の IAM ロールをAWSの機能を活用する前にアカウントAWSDMS. これらのロールのうち 2 つは dms-vpc-role
と dms-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 の ID ベースのポリシーを作成する方法については、『IAM ユーザーガイド』の「JSON タブでのポリシーの作成」を参照してください。
トピック
ポリシーのベストプラクティス
ID ベースのポリシーは非常に強力です。アカウント内で、AWS DMSリソースを作成、アクセス、または削除できるかどうかを決定します。これらのアクションを実行すると、AWS アカウントに追加料金が発生する可能性があります。アイデンティティベースポリシーを作成または編集するときは、以下のガイドラインと推奨事項に従います:
-
AWS 管理ポリシーの使用を開始する – AWS DMSの使用をすばやく開始するには、AWS 管理ポリシーを使用して、従業員に必要なアクセス許可を付与します。これらのポリシーはアカウントで既に有効になっており、AWS によって管理および更新されています。詳細については、IAM ユーザーガイドの「AWS 管理ポリシーを使用したアクセス許可の使用スタート」を参照してください。
-
最小権限を付与する – カスタムポリシーを作成するときは、タスクの実行に必要な許可のみを付与します。最小限のアクセス許可からスタートし、必要に応じて追加のアクセス許可を付与します。この方法は、寛容なアクセス許可で始め、後でそれらを強化しようとするよりも安全です。詳細については、『IAM ユーザーガイド』の「最小特権を認める」を参照してください。
-
機密性の高い操作に MFA を有効にする – 追加セキュリティとして、機密性の高いリソースまたは API 操作にアクセスするために IAM ユーザーに対して、多要素認証 (MFA) の使用を要求します。詳細については、IAM ユーザーガイドの「AWS での多要素認証 (MFA) の使用」を参照してください。
-
追加のセキュリティとしてポリシー条件を使用する – 実行可能な範囲内で、ID ベースのポリシーでリソースへのアクセスを許可する条件を定義します。例えば、要求が発生しなければならない許容 IP アドレスの範囲を指定するための条件を記述できます。指定された日付または時間範囲内でのみリクエストを許可する条件を書くことも、SSL や MFA の使用を要求することもできます。詳細については、「」を参照してください。IAM JSON ポリシー要素: 条件のIAM ユーザーガイド。
AWS DMS コンソールを使用する
次のポリシーでは、AWSDMS、を含むAWSDMS コンソール。また、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 DMSAmazon Redshift クラスターがに対して適切に設定されていることを検証するにはAWS DMS。
{ "Effect": "Allow", "Action": [ "redshift:Describe*", "redshift:ModifyClusterIamRoles" ], "Resource": "arn:aws:dms:
region
:account
:resourcetype
/id
" }
-AWSDMS Console は、に自動的にアタッチされる複数のロールを作成します。AWS使用時のアカウントAWSDMS コンソール。♪AWS Command Line Interface(AWS CLI) またはAWSDMS API を移行するには、これらのロールをアカウントに追加する必要があります。これらのロールの追加についての詳細は、「AWS CLI と AWS DMS API で使用する IAM ロールの作成」を参照してください。
このポリシーを使用してにアクセスするための要件の詳細については、AWSDMS, 参照AWS DMS の使用に必要な IAM アクセス許可。
自分の許可の表示をユーザーに許可する
この例では、ユーザー ID にアタッチされたインラインおよび管理ポリシーの表示を 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 バケットへのアクセス
AWSDMS は、データベース移行の中間ストレージとして Amazon S3 バケットを使用します。通常、AWSDMS は、この目的のためにデフォルトの S3 バケットを管理します。ただし、場合によっては、特にAWS CLIまたはAWSDMS API,AWSDMS を使用すると、独自の S3 バケットを指定できます。たとえば、Amazon Redshift ターゲットエンドポイントにデータを移行するための独自の S3 バケットを指定できます。この場合、に基づいてアクセス許可を持つロールを作成する必要があります。AWS-管理のAmazonDMSRedshiftS3Role
ポリシー。
次の例に、のバージョンのを示します。AmazonDMSRedshiftS3Role
ポリシー。許可しますAWSの IAM ユーザーに付与する DMSAWSAmazon S3 バケットの 1 つへのアカウントアクセス。また、このユーザーは、オブジェクトの追加、更新、削除を行うこともできます。
このポリシーでは、ユーザーに s3:PutObject
、s3:GetObject
、s3:DeleteObject
のアクセス許可を付与するだけでなく、s3:ListAllMyBuckets
、s3:GetBucketLocation
、および s3:ListBucket
のアクセス許可も付与します。これらが、コンソールで必要とされる追加のアクセス許可です。他のアクセス許可は許可しますAWSDMS は、バケットのライフサイクルを管理します。また、オブジェクトをコピーするには、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 リソースへのアクセスをコントロールできます。この例では、すべてのへのアクセスを許可するポリシーを作成する方法を示します。AWSDMS エンドポイント。ただし、アクセス許可が付与されるのは、エンドポイントデータベースタグ 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
のタグが必要です。それ以外の場合、このユーザーはアクセスを拒否されます。条件キー名では大文字と小文字は区別されないため、条件タグキー Owner
は Owner
と owner
に一致します。詳細については、「」を参照してください。IAM JSON ポリシー要素: 条件のIAM ユーザーガイド。
リソースベースのポリシーの例 (AWS KMS)
AWSDMS でカスタムを作成できるAWS KMSサポートされているターゲットエンドポイントデータを暗号化するための暗号化キー。キーポリシーを作成して、サポートされているターゲットデータ暗号化用に作成する暗号化キーに、このポリシーをアタッチする方法については、「作成と使用AWS KMSAmazon Redshift ターゲットデータを暗号化するためのキー」および「Amazon S3 ターゲットオブジェクトを暗号化する AWS KMS キーの作成」を参照してください。
トピック
カスタムのポリシーAWS KMSAmazon Redshift ターゲットデータを暗号化するための暗号化キー
次の例は、に対して作成されたキーポリシーの JSON を説明します。AWS KMSAmazon Redshift ターゲットデータを暗号化するために作成する暗号化キー。
{ "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ターゲットエンドポイントなどのリソース。
カスタムのポリシーAWS KMSAmazon S3 ターゲットデータを暗号化するための暗号化キー
次の例は、に対して作成されたキーポリシーの JSON を説明します。AWS KMSAmazon S3 ターゲットデータを暗号化するために作成する暗号化キー。
{ "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ターゲットエンドポイントなどのリソース。
Secrets を使用したアクセスAWS Database Migration Serviceエンドポイント
を使用する場合AWS DMS、a秘密は、認証するための一連のユーザクレデンシャルを表すために使用できる暗号化キーです。シークレット認証では、サポート対象のデータベース接続AWS DMSソースまたはターゲットエンドポイント。Oracle Advanced Storage Management(ASM)も使用するOracleエンドポイントの場合、AWS DMSでは、Oracle ASM にアクセスするためのユーザー資格情報を表す追加のシークレットが必要です。
次のシークレットを作成できます。AWS DMSを使用してシークレット認証が必要AWS Secrets Managerは、クラウドおよびオンプレミスのアプリケーション、サービス、ITリソースにアクセスするための認証情報を安全に作成、保存、取得するためのサービスです。これには、ユーザーの介入なしに、暗号化されたシークレット値の自動定期的なローテーションがサポートされ、資格情報のセキュリティが強化されます。でのシークレット値のローテーションの有効化AWS Secrets Managerまた、シークレットに依存するデータベースの移行に影響を与えずに、このシークレット値のローテーションが行われるようにします。エンドポイントデータベース接続を秘密に認証するには、ID または ARN を割り当てるシークレットを作成します。SecretsManagerSecretId
で、エンドポイント設定に含めます。Oracle ASM を Oracle エンドポイントの一部として秘密裏に認証するには、ID または ARN を割り当てるシークレットを作成します。SecretsManagerOracleAsmSecretId
で、エンドポイント設定にも含めます。
の詳細については、「」を参照してください。AWS Secrets Manager「」を参照してください。とはAWSSecrets Manager?のAWS Secrets Managerユーザーガイド。
AWS DMS次のオンプレミスでのシークレット認証をサポートするか、AWSサポートされているソースおよびターゲットエンドポイントで管理されたデータベース:
-
Amazon DocumentDB
-
IBM Db2 LUW
-
Microsoft SQL Server
-
MongoDB
-
MySQL
-
Oracle
-
PostgreSQL
-
Amazon Redshift
-
SAP ASE
これらのデータベースに接続するには、エンドポイント設定の一部として、次のいずれかの値セットを入力できますが、両方を入力することはできません。
-
データベース接続を認証するためのクリアテキスト値
UserName
,Password
,ServerName
, およびPort
[] 設定。Oracle ASM も使用する Oracle エンドポイントの場合は、追加のクリアテキスト値を含めて、AsmUserName
,AsmPassword
, およびAsmServerName
[] 設定。 -
の値を使用したシークレット認証
SecretsManagerSecretId
そしてSecretsManagerAccessRoleArn
[] 設定。Oracle ASM を使用する Oracle エンドポイントの場合は、SecretsManagerOracleAsmSecretId
そしてSecretsManagerOracleAsmAccessRoleArn
[] 設定。これらの設定のシークレット値には、次のものを含めることができます。-
SecretsManagerSecretId
— エンドポイントデータベースアクセス用に作成したシークレットの完全な Amazon リソースネーム (ARN)、部分 ARN、またはフレンドリ名AWS Secrets Manager。 -
SecretsManagerAccessRoleArn
— 提供するために IAM で作成したシークレットアクセスロールの ARNAWS DMSこれへのアクセスSecretsManagerSecretId
はユーザーに代わってシークレットです。 -
SecretsManagerOracleAsmSecretId
— Oracle ASM アクセス用に作成したシークレットの完全な Amazon リソースネーム (ARN)、部分的な ARN、またはフレンドリ名AWS Secrets Manager。 -
SecretsManagerOracleAsmAccessRoleArn
— 提供するために IAM で作成したシークレットアクセスロールの ARNAWS DMSこれへのアクセスSecretsManagerOracleAsmSecretId
はユーザーに代わってシークレットです。
注記 また、単一のシークレットアクセスロールを使用して提供することもできます。AWS DMS両方へのアクセス
SecretsManagerSecretId
シークレットとSecretsManagerOracleAsmSecretId
シークレット。両方のシークレットに対してこの単一のシークレットアクセスロールを作成する場合は、このアクセスロールに同じ ARN を両方に割り当ててください。SecretsManagerAccessRoleArn
そしてSecretsManagerOracleAsmAccessRoleArn
。たとえば、両方のシークレットに対するシークレットアクセスロールの ARN が変数に割り当てられている場合、ARN2xsecrets
では、これらの ARN 設定を次のように設定できます。SecretsManagerAccessRoleArn = ARN2xsecrets; SecretsManagerOracleAsmAccessRoleArn = ARN2xsecrets;
これらの値の作成の詳細については、「」を参照してください。の使用AWS Management Consoleシークレットおよびシークレットアクセスロールを作成するには。
-
エンドポイントに必要なシークレットおよびシークレットアクセスロールエンドポイント設定を作成して指定したら、を実行するユーザアカウントの権限を更新します。CreateEndpoint
またはModifyEndpoint
これらのシークレットの詳細を含む API リクエスト。これらのアカウント権限には、IAM:GetRole
シークレットアクセスロールに対する権限とSecretsManager:DescribeSecret
シークレットに対する許可。AWS DMSアクセスロールとそのシークレットの両方を検証するには、これらの権限が必要です。
必要なユーザー権限を提供して検証するには
-
AWS Management Console にサインインして、AWS Identity and Access Management で https://console.aws.amazon.com/iam/
コンソールを開きます。 -
選択ユーザーを選択し、[]ユーザー ID作成に使用
CreateEndpoint
そしてModifyEndpoint
API コール。 -
「」からアクセス許可[] タブで、{} JSON。
-
ユーザーが以下に示す権限を持っていることを確認します。
{ "Statement": [{ "Effect": "Allow", "Action": [ "iam:GetRole", "iam:PassRole" ], "Resource": "
SECRET_ACCESS_ROLE_ARN
" }, { "Effect": "Allow", "Action": "secretsmanager:DescribeSecret", "Resource": "SECRET_ARN
" } ] } -
ユーザーにこれらの権限がない場合は、権限を追加します。
-
IAM ロールを使用して DMS API 呼び出しを実行している場合は、それぞれのロールで上記のステップを繰り返してください。
-
ターミナルを開き、AWS CLI上記で使用したロールまたはユーザーを引き受け、権限が正しく与えられていることを検証します。
-
IAM を使用して SecretAccessRole に対するユーザーのアクセス許可を検証します。
get-role
コマンド。aws iam get-role --role-name
ROLE_NAME
置換
ROLE_NAME
の名前でSecretsManagerAccessRole
。コマンドでエラーメッセージが返された場合は、アクセス許可が正しく指定されていることを確認してください。
-
Secrets Manager を使用して、シークレットに対するユーザーの権限を検証します。
describe-secret
コマンド。aws secretsmanager describe-secret --secret-id
SECRET_NAME OR SECRET_ARN
--region=REGION_NAME
ユーザーには、フレンドリ名、部分 ARN、または完全な ARN を指定できます。詳細については、「」を参照してください。説明-秘密。
コマンドでエラーメッセージが返された場合は、アクセス許可が正しく指定されていることを確認してください。
-
の使用AWS Management Consoleシークレットおよびシークレットアクセスロールを作成するには
♪AWS Management Consoleエンドポイント認証のシークレットを作成し、許可するポリシーとロールを作成するAWS DMSお客様に代わってシークレットにアクセスします。
を使用してシークレットを作成するにはAWS Management ConsoleそれをAWS DMSを使用して、ソースおよびターゲットのエンドポイント接続のデータベースを認証できます
-
AWS Management Console にサインインして、AWS Secrets Manager で https://console.aws.amazon.com/secretsmanager/
コンソールを開きます。 -
[Store a new secret] (新しいシークレットの保存) を選択します。
-
[]シークレットタイプを選択で新しいシークレットを保存する[()] ページで、他の種類のシークレット次に、プレーンテキストが使用されます。
注記 この時点からエンドポイントデータベースに接続するために、クリアテキストの認証情報を入力する必要があるのは、ここだけです。
-
左プレーンテキストが使用されますfield:
-
アイデンティティを割り当てるシークレットの場合
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
は、次の例のように、Web 上のデータベースサーバー名 (アドレス) です。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 エンドポイント設定に基づいて指定できる完全なリストです。
ここ,
Oracle ASMにアクセスしているユーザーの名前です。asm_username
は Oracle ASM ユーザーのパスワードであり、asm_user_password
は、次の例のように、ポートを含むWeb上のOracle ASMサーバー名(アドレス)です。asm_server_name
{ "asm_user": "oracle_asm_user", "asm_password": "oracle_asm_password", "asm_server": "oracle101.abcdefghij.us-east-1.rds.amazonaws.com:8190/+ASM" }
-
-
次のいずれかを選択します。AWS KMSシークレットを暗号化する暗号化キー。サービス用に作成されたデフォルトの暗号化キーは、次の方法で使用できます。AWS Secrets Managerまたは、AWS KMS作成したキー。
-
このシークレットを参照する名前とオプションの説明を指定します。これは、値として使用するわかりやすい名前です。
SecretsManagerSecretId
またはSecretsManagerOracleAsmSecretId
。 -
シークレットで自動ローテーションを有効にする場合は、AWS Lambda説明に従って、シークレットに対する認証情報をローテーションする権限を持つ関数です。ただし、Lambda 関数を使用するように自動ローテーションを設定する前に、関数の構成設定で次の 4 文字を
EXCLUDE_CHARACTERS
環境変数。;.:+
AWS DMSでは、エンドポイントの認証情報に使用されるパスワードにこれらの文字を使用できません。これらを除外するように Lambda 関数を設定すると、AWS Secrets Managerこれらの文字を、ローテーションされたパスワード値の一部として生成します。Lambda 関数を使用するように自動ローテーションを設定したら、AWS Secrets Managerシークレットをすぐにローテーションして、シークレット構成を検証します。
注記 データベースエンジンの構成によっては、データベースでローテーションされた資格情報が取得されない場合があります。この場合、資格情報を更新するには、タスクを手動で再起動する必要があります。
-
にシークレットを確認および保存するAWS Secrets Manager。次に、内のフレンドリ名で、各シークレットを検索することができます。AWS Secrets Managerをクリックし、シークレット ARN をの値として取得します。
SecretsManagerSecretId
またはSecretsManagerOracleAsmSecretId
必要に応じて、エンドポイントデータベース接続および Oracle ASM(使用されている場合)へのアクセスを認証します。
シークレットアクセスポリシーとロールを作成して、SecretsManagerAccessRoleArn
またはSecretsManagerOracleAsmAccessRoleArn
ができる。AWS DMSにアクセスするにはAWS Secrets Manager適切なシークレットにアクセスするには
-
にサインインします。AWS Management Console[()] を開くにはAWS Identity and Access Management(IAM) コンソールでhttps://console.aws.amazon.com/iam/
。 -
選択ポリシー次に、ポリシーの作成。
-
選択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
, } ] }ここ,
シークレットの ARN は、どちらからも得ることができますsecret_arn
SecretsManagerSecretId
またはSecretsManagerOracleAsmSecretId
必要に応じて、および
の ARN ですかAWS KMS次の例のように、シークレットを暗号化するために使用するキー。kms_key_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の場合、指定する必要はありませんAWS KMSのアクセス許可
。kms_key_arn
ポリシーで両方のシークレットへのアクセスを提供する場合は、もう 1 つのシークレットに追加の JSON リソースオブジェクトを指定します。
secret_arn
。 -
フレンドリ名とオプションの説明を使用して、ポリシーを確認して作成します。
-
選択ロール次に、ロールの作成。
-
選択AWSサービスは、信頼されたエンティティのタイプとして使用します。
-
選択DMS信頼されたサービスとしてのサービスのリストから、[] を選択します。次へ: アクセス許可.
-
手順 4 で作成したポリシーを検索してアタッチし、タグを追加してロールを確認します。この時点で、ロールの信頼関係を編集して、AWS DMS信頼されたエンティティとしてのリージョンのサービスプリンシパル。このプリンシパルの形式は次のとおりです。
dms.
region-name
.amazonaws.comここ,
お住まいの地域の名前はありますか。region-name
us-east-1
。したがって、AWS DMSこのリージョンの地域サービスプリンシパルは次のとおりです。dms.us-east-1.amazonaws.com
-
ロールの信頼されたエンティティを編集した後、フレンドリ名とオプションの説明を使用してロールを作成します。IAM でフレンドリ名で新しいロールを検索し、ロール ARN を
SecretsManagerAccessRoleArn
またはSecretsManagerOracleAsmAccessRoleArn
エンドポイントデータベース接続を認証するための値。
プライベートサブネットのレプリケーションインスタンスで secrets Manager を使用するには
-
シークレットマネージャー VPC エンドポイントを作成し、エンドポイントの DNS を書き留めます。シークレットマネージャーの VPC エンドポイントの作成の詳細については、「」を参照してください。VPC エンドポイントを介したSecrets Manager への接続 のAWSSecrets Manager ユーザーガイド。
-
レプリケーションインスタンスのセキュリティグループをシークレットマネージャー VPC エンドポイントにアタッチします。
-
レプリケーションインスタンスのセキュリティグループエグレスルールでは、宛先のすべてのトラフィックを許可します。
0.0.0.0/0
。 -
エンドポイントの追加接続属性を設定し、
secretsManagerEndpointOverride=
次の例のように、シークレットマネージャー VPC エンドポイント DNS を指定します。secretsManager endpoint DNS
secretsManagerEndpointOverride=vpce-1234a5678b9012c-12345678.secretsmanager.eu-west-1.vpce.amazonaws.com
AWS Database Migration Service Identity and Access のトラブルシューティング
次の情報は、AWS DMS と IAM の使用に伴って発生する可能性がある一般的な問題の診断や修復に役立ちます。
トピック
AWS DMS でアクションを実行する権限がない
AWS Management Console から、アクションを実行する権限がないと通知された場合、管理者に問い合わせ、サポートを依頼する必要があります。お客様のユーザー名とパスワードを発行したのが、担当の管理者です。
次のエラー例は、mateojackson
IAM ユーザーは、コンソールを使用して、に関する詳細を表示しようとします。AWSDMS エンドポイントはありますが、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
アクションを実行できるようにポリシーの更新を依頼します。
アクセスキーを表示する場合
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 DMS がこれらの機能をサポートしているかどうかを確認するには、「AWS Database Migration Service で IAM を使用する方法」を参照してください。
-
所有している AWS アカウント全体のリソースへのアクセス権を提供する方法については、IAM ユーザーガイドの「所有している別の AWS アカウント でアカウントへのアクセス権を IAM ユーザーに提供」を参照してください。
-
サードパーティーの AWS アカウント にリソースへのアクセス権を提供する方法については、『IAM ユーザーガイド』の「第三者が所有する AWS アカウント アカウントへのアクセス権を付与する」を参照してください。
-
ID フェデレーションを介してアクセスを提供する方法については、『IAM ユーザーガイド』の「外部で認証されたユーザー (ID フェデレーション) へのアクセスの許可」を参照してください。
-
クロスアカウントアクセスでのロールとリソースベースのポリシーの使用の違いの詳細については、IAM ユーザーガイドの IAM ロールとリソースベースのポリシーとの相違点を参照してください。
AWS Database Migration Service のコンプライアンス検証
サードパーティーの監査者は、複数の AWS Database Migration Service コンプライアンスプログラムの一環として AWS のセキュリティとコンプライアンスを評価します。これには、次のプログラムが含まれます。
-
SOC
-
PCI
-
ISO
-
FedRAMP
-
DoD CC SRG
-
HIPAA BAA
-
MTCS
-
CS
-
K-ISMS
-
ENS High
-
OSPAR
-
HITRUST CSF
特定のコンプライアンスプログラムの対象となる AWS サービスのリストについては、「コンプライアンスプログラムによる AWS 対象範囲内のサービス
サードパーティーの監査レポートをダウンロードするには、AWS Artifact を使用します。詳細については、「」を参照してください。にレポートをダウンロードするAWSアーティファクト。
AWS DMS を使用する際のお客様のコンプライアンス責任は、お客様のデータの機密性や貴社のコンプライアンス目的、適用される法律および規制によって決まります。AWS では、コンプライアンスに役立つ以下のリソースを提供しています。
-
『セキュリティ&コンプライアンス クイックリファレンスガイド
』、『』– これらのデプロイガイドには、アーキテクチャ上の考慮事項の説明と、AWS でセキュリティとコンプライアンスに重点を置いたベースライン環境をデプロイするためのステップが記載されています。 -
HIPAA のセキュリティとコンプライアンスに関するホワイトペーパーを作成する
- このホワイトペーパーは、企業が AWS を使用して HIPAA 準拠のアプリケーションを作成する方法について説明します。 AWS コンプライアンスのリソース
– このワークブックおよびガイドのコレクションは、お客様の業界と拠点に適用されるものである場合があります。 AWS Config - この AWS サービスでは、自社プラクティス、業界ガイドライン、および規制に対するリソースの設定の準拠状態を評価します。
-
AWS Security Hub: この AWS サービスでは、AWS 内のセキュリティ状態を包括的に表示しており、セキュリティ業界の標準およびベストプラクティスへの準拠を確認するのに役立ちます。
AWS Database Migration Service での耐障害性
AWS のグローバルインフラストラクチャは AWS リージョンとアベイラビリティーゾーンを中心に構築されます。AWSリージョンには、低レイテンシー、高いスループット、そして高度の冗長ネットワークで接続されている複数の物理的に独立・隔離されたアベイラビリティーゾーンがあります。アベイラビリティーゾーンでは、アベイラビリティーゾーン間で中断せずに、自動的にフェイルオーバーするアプリケーションとデータベースを設計および運用することができます。アベイラビリティーゾーンは、従来の単一または複数のデータセンターインフラストラクチャよりも可用性、耐障害性、および拡張性が優れています。
AWS のリージョンとアベイラビリティーゾーンの詳細については、AWSグローバルインフラストラクチャ
に加えて、AWSグローバルインフラストラクチャAWS DMSを選択すると、マルチ AZ 配置を使用してレプリケーションインスタンスの高可用性とフェイルオーバーサポートが提供されます。Multi-AZオプション。
マルチ AZ 配置では、AWSDMS は、異なるアベイラビリティーゾーンにレプリケーションインスタンスのスタンバイレプリカを自動的にプロビジョニングし、維持します。プライマリレプリケーションインスタンスは、同期的にスタンバイレプリカにレプリケートされます。プライマリレプリケーションインスタンスに障害が発生するか、応答しない場合、スタンバイ状態で中断時間をできる限り抑えて、実行中のタスクを再開します。プライマリはその状態を常にスタンバイにレプリケーションしているため、マルチ 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 エンドポイントまたは特定の仮想プライベートクラウド (VPC) からのアクセスをコントロールするポリシー。これにより、実質的に AWS ネットワーク内の特定の VPC からの特定の AWS DMS リソースへのネットワークアクセスが分離されます。AWS DMS でリソースベースのポリシーを使用する方法の詳細については、「リソース名とタグを使用したファイングレインアクセスコントロール」を参照してください。
コミュニケーションを限定するにはAWS DMS単一の VPC 内では、に接続できる VPC インターフェイスエンドポイントを作成できます。AWS DMSを通してAWS PrivateLink。AWS PrivateLinkへの呼び出しを確実にするのに役立ちますAWS DMS関連付けられた結果は、インターフェイスエンドポイントが作成される特定の VPC に限定されたままです。次に、このインターフェイスエンドポイントの URL を every のオプションとして指定できます。AWS DMSを使用して実行するコマンドAWS CLIまたは SDK です。そうすることで、とのコミュニケーションが確実に行われるようになります。AWS DMSVPC に限定されたままで、それ以外の場合はパブリックインターネットからは見えません。
単一の VPC 内の DMS にアクセスするためのインターフェイスエンドポイントを作成するには
AWS Management Console にサインインして、Amazon VPC コンソール (https://console.aws.amazon.com/vpc/
) を開きます。 -
ナビゲーションペインで、[] を選択します。エンドポイント。これにより、エンドポイントの作成ページ。VPC からインターフェイスエンドポイントを作成できるAWS DMS。
-
選択AWSサービスを選択し、次の値を検索して選択します。サービス名この場合、AWS DMS次のような形式です。
com.amazonaws.
region
.dmsここ,
を指定します。AWS地域AWS DMSたとえば、実行するregion
com.amazonaws.us-west-2.dms
。 -
を使用する場合VPCで、インターフェイスエンドポイントを作成する VPC を選択します。たとえば、
vpc-12abcd34
。 -
の値を選択します。アベイラビリティーゾーンそしてのためにサブネット ID。これらの値は、お客様が選択した場所を示す必要があります。AWS DMSエンドポイントを実行できます。たとえば、
us-west-2a (usw2-az1)
そしてsubnet-ab123cd4
。 -
選択DNS 名を有効化をクリックして、DNS 名でエンドポイントを作成します。この DNS 名は、エンドポイント ID(
vpce-12abcd34efg567hij
) ランダムな文字列でハイフネーションされる (ab12dc34
). これらは、ドットで区切られた逆の順序でサービス名から区切られます。vpce
() が追加されました。dms.us-west-2.vpce.amazonaws.com
).例: 「
vpce-12abcd34efg567hij-ab12dc34.dms.us-west-2.vpce.amazonaws.com
」。 -
を使用する場合セキュリティグループで、エンドポイントに使用するグループを選択します。
セキュリティグループを設定するときは、そのグループ内からのアウトバウンド HTTPS コールを許可するようにしてください。詳細については、「」を参照してください。セキュリティグループの作成のAmazon VPC User Guide。
-
どちらかを選択します。完全アクセスまたはカスタム値ポリシー。たとえば、エンドポイントの特定のアクションとリソースへのアクセスを制限する、次のようなカスタムポリシーを選択できます。
{ "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 DMSAPI 呼び出し。特定のレプリケーションインスタンスの削除または変更を除く。
ステップ 6 で作成した DNS 名をオプションとして使用して形成された URL を指定できるようになりました。これはすべてに対して指定します。AWS DMS作成したインターフェイスエンドポイントを使用してサービスインスタンスにアクセスするための CLI コマンドまたは API 操作。たとえば、DMS CLI コマンドを実行します。DescribeEndpoints
次に示すように、この VPC を使用します。
$ aws dms describe-endpoints --endpoint-url https://vpce-12abcd34efg567hij-ab12dc34.dms.us-west-2.vpce.amazonaws.com
プライベート DNS オプションを有効にした場合、エンドポイント URL をリクエストに指定する必要はありません。
VPC インターフェイスエンドポイントの作成と使用(プライベート DNS オプションの有効化を含む)の詳細については、を参照してください。インターフェイス VPC エンドポイント (AWSPrivateLink)の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 DMSAmazon Redshift クラスターがに対して適切に設定されていることを検証するにはAWS DMS。
{ "Effect": "Allow", "Action": [ "redshift:Describe*", "redshift:ModifyClusterIamRoles" ], "Resource": "arn:aws:dms:
region
:account
:resourcetype
/id
" }
-AWS DMSコンソールは、に自動的にアタッチされる複数のロールを作成します。AWS使用時のアカウントAWS DMSconsole. 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 の場合は、3 つの IAM ロールをAWSの機能を活用する前にアカウントAWS DMS。これらのロールのうち 2 つは dms-vpc-role
と dms-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-role
、dms-cloudwatch-logs-role
、および dms-access-for-endpoint
の各 IAM ロールを作成します。
AWS CLI または AWS DMS API で使用する IAM ロール dms-vpc-role を作成するには
-
次の 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
-
次のコマンドを使用して
AmazonDMSVPCManagementRole
ポリシーをdms-vpc-role
にアタッチします。aws iam attach-role-policy --role-name dms-vpc-role --policy-arn arn:aws:iam::aws:policy/service-role/AmazonDMSVPCManagementRole
AWS CLI または AWS DMS API で使用する IAM ロール dms-cloudwatch-logs-role を作成するには
-
次の 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
-
次のコマンドを使用して
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 へのアクセスを提供します。
Amazon Redshift をターゲットデータベースとして使用する IAM ロール dms-access-for-endpoint を作成するには
-
次の 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" } ] }
-
次のコマンドを使用して AWS CLI でロールを作成します。
aws iam create-role --role-name dms-access-for-endpoint --assume-role-policy-document file://dmsAssumeRolePolicyDocument3.json
-
次のコマンドを使用して
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 に基づいてポリシーを割り当てることができます。
次のポリシーでは、へのアクセスが拒否されます。AWS DMSARN を使用したレプリケーションインスタンスarn: aws: dms: us-east-1:152683116: rep: DOH67ZTOXGLIXMIHKITV:
{ "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 リソースのタグ付けの詳細については、「でのリソースへのタグ付けAWSDatabase Migration Service」を参照してください。
以下のリストは、AWS DMS で使用できる標準タグを示しています。
-
aws:CurrentTime – リクエストの日時を表し、一時的な条件に基づいてアクセス制限を許可します。
-
aws: EpochTime — このタグは先行している aws: CurrentTime タグと似ていますが、現在の時刻が Unix エポックからの経過秒数で表されることが異なります。
-
aws: MultiFactorAuthPresent — これは、リクエストが多要素認証を介して署名されたかどうかを示すブールタグです。
-
aws:MultiFactorAuthAge – 多要素認証トークンの期間 (秒) へのアクセスを提供します。
-
aws: principaltype — 現在のリクエストでプリンシパルのタイプ (ユーザー、アカウント、フェデレーティッドユーザーなど) へのアクセスを提供します。
-
aws: SourceIp — リクエストを発行するユーザーのソース IP アドレスを表します。
-
aws: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 Key Management Service(AWS KMS) に固有のキーAWSアカウント. このキーは、AWS KMS で表示し、管理できます。アカウント (aws/dms
) でデフォルトの KMS キーを使用できます。あるいは、カスタム KMS キーを作成できます。既存の KMS キーがある場合、暗号化にそのキーを使用することもできます。
暗号化キーとして使用するカスタムまたは既存の AWS KMS キーは、対称キーである必要があります。AWS DMS では、非対称暗号化キーの使用がサポートされていません。対称および非対称暗号化キーの詳細については、を参照してください。https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.htmlのAWS Key Management Serviceデベロッパーガイド。
デフォルトの KMS キー (aws/dms
) は、レプリケーションインスタンスの初回起動時に [] からカスタム KMS キーを選択していない場合は、作成されます。アドバンストの セクションレプリケーションインスタンスの作成ページで. デフォルトの KMS キーを使用する場合、移行用の IAM ユーザーアカウントにはアクセス許可として kms:ListAliases
と kms:DescribeKey
のみを付与する必要があります。デフォルトの KMS キーの使用に関する詳細については、「AWS DMS の使用に必要な IAM アクセス許可」を参照してください。
カスタム KMS キーを使用するには、次のオプションの 1 つを使用して、カスタム KMS キーにアクセス許可を割り当てます。
-
移行に使用する IAM ユーザーアカウントを、AWS KMS カスタムキーのキー管理者あるいはキーユーザーとして追加します。これにより、IAM ユーザーアカウントに必要な AWS KMS 権限が確実に付与されます。このアクションは、AWS DMS を使用するために IAM ユーザーアカウントに付与する IAM のアクセス許可に追加されます。キーユーザーへのアクセス権限の付与の詳細については、「」を参照してください。KMS キーの使用をキーユーザーに許可するのAWS Key Management Service開発者ガイド の最初のリリースです。
-
カスタム 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 DMS側AWSアカウント. おれのAWSアカウントには、ごとにデフォルトの暗号化キーがあります。AWSリージョン。
AWS DMS リソースの暗号化に使用される AWS KMS キーを管理するには、AWS Key Management Service を使用します。AWS KMS は、安全で可用性の高いハードウェアとソフトウェアを組み合わせて、クラウド向けに拡張されたキー管理システムを提供します。AWS KMS を使用して、暗号化キーを作成し、それらのキーの使用方法を制御するポリシーを定義できます。
を見つけることができます。AWS KMSのAWS Management Console
-
AWS Management Console にサインインし、AWS Key Management Service (AWS KMS) コンソール (https://console.aws.amazon.com/kms
) を開きます。 -
[()] を変更するにはAWS リージョンの場合は、ページの右上隅にあるリージョンセレクターを使用します。
-
次のいずれかのオプションを選択します。AWS KMSkey:
-
AWS によって作成および管理されるアカウントのキーを表示するには、ナビゲーションペインで [AWS マネージドキー] を選択します。
-
ユーザーが作成および管理するアカウント内のキーを表示するには、ナビゲーションペインで [Customer managed keys (カスタマー管理型のキー)] を選択します。
-
AWS KMS は AWS CloudTrail をサポートしているため、キーの使用を監査して、キーが適切に使用されていることを確認できます。おれのAWS KMSキーは、AWS DMSがサポートされています。AWSAmazon RDS、Amazon S3、Amazon Redshift、Amazon EBS などのサービス。
また、次の AWS DMS エンドポイントでターゲットデータを暗号化するためだけにカスタム AWS KMS キーを作成することができます。
-
Amazon Redshift — 詳細については、「」を参照してください。作成と使用AWS KMSAmazon Redshift ターゲットデータを暗号化するためのキー。
-
Amazon S3 — 詳細については、「」を参照してください。Amazon S3 ターゲットオブジェクトを暗号化する 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 アドレスにアクセスを許可するセキュリティルールを作成できます。
-
2 つの 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 ネットワークインターフェイスにバインドされた単一の 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 を使用している場合は、で提供されているルート CA と証明書バンドルをrds-combined-ca-bundle.pem
Amazon RDS がホストするファイル。このファイルのダウンロードの詳細については、「」を参照してください。SSL/TLS を使用した DB インスタンスへの接続の暗号化のAmazon RDS ユーザーガイド。
SSL 証明書認証に使用する SSL モードは、複数の中から選択できます。
-
無し— 接続は暗号化されません。このオプションは安全ではありませんが、必要なオーバーヘッドが小さくなります。
-
要求する— 接続は 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 |
デフォルト | サポート外 | サポート対象 | サポート外 |
DMS コンソールまたは API の SSL モードオプションは、Kinesis や DynamoDB などの一部のデータストリーミングおよび NoSQL サービスには適用されません。これらはデフォルトで安全であるため、DMS は SSL モードの設定が none に等しいことを示します(SSL モード=なし). SSL を使用するために、エンドポイントに追加の設定を指定する必要はありません。たとえば、Kinesis をターゲットエンドポイントとして使用する場合、デフォルトでセキュリティで保護されます。Kinesis への API 呼び出しはすべて SSL を使用するため、DMS エンドポイントに追加の SSL オプションは必要ありません。HTTPS プロトコルを使用して、SSL エンドポイントを介して安全にデータを格納し、データを取得できます。HTTPS プロトコルは、Kinesis Data Stream への接続時にデフォルトで使用されます。
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 コンソールを使用して証明書をインポートすることもできます。

MySQL 互換、PostgreSQL、または SQL Server のエンドポイントでの SSL の有効化
新しく作成したエンドポイントまたは既存のエンドポイントに SSL 接続を追加できます。
SSL を使用する AWS DMS エンドポイントを作成するには
-
にサインインします。AWS Management Console[()] を開くにはAWS DMSコンソールhttps://console.aws.amazon.com/dms/v2/
。 としてサインインしている場合AWS Identity and Access Management(IAM) ユーザー、にアクセスするための適切なアクセス許可があることを確認します。AWS DMS。データベース移行に必要なアクセス許可の詳細については、「AWS DMS の使用に必要な IAM アクセス許可」を参照してください。
-
ナビゲーションペインで [Certificates] を選択します。
-
[Import Certificate] を選択します。
-
エンドポイントへの接続の暗号化に使用する証明書をアップロードします。
注記 を使用して、証明書をアップロードすることもできます。AWS DMS[] を選択してエンドポイントを作成または変更する場合にコンソールを作成します。新しい CA 証明書の追加でデータベースエンドポイントの作成ページで.
ターゲットとして Aurora サーバーレスの場合は、に記載されている証明書を取得します。Aurora サーバーレスでの TLS/SSL の使用。
-
「ステップ 2: ソースおよびターゲットエンドポイントを指定する」での説明に従って、エンドポイントを作成します。
SSL を使用できるように既存の AWS DMS エンドポイントを変更するには
-
にサインインします。AWS Management Console[()] を開くにはAWS DMSコンソールhttps://console.aws.amazon.com/dms/v2/
。 IAM ユーザーとしてサインインしている場合は、にアクセスするための適切なアクセス権限があることを確認します。AWS DMS。データベース移行に必要なアクセス許可の詳細については、「AWS DMS の使用に必要な IAM アクセス許可」を参照してください。
-
ナビゲーションペインで [Certificates] を選択します。
-
[Import Certificate] を選択します。
-
エンドポイントへの接続の暗号化に使用する証明書をアップロードします。
注記 を使用して、証明書をアップロードすることもできます。AWS DMS[] を選択してエンドポイントを作成または変更する場合にコンソールを作成します。新しい CA 証明書の追加でデータベースエンドポイントの作成ページで.
-
ナビゲーションペインで、[Endpoints] を選択し、変更するエンドポイントを選択して [Modify] を選択します。
-
SSL モードの値を選択します。
[verify-ca] モードまたは [verify-full] モードを選択した場合は、次に示すように、使用する証明書を [CA 証明書] に指定します。
-
Modify を選択します。
-
エンドポイントが変更されている場合は、エンドポイントを選択して [接続のテスト] を選択し、SSL 接続が機能しているかどうかを調べます。
ソースおよびターゲットエンドポイントを作成したら、これらのエンドポイントを使用するタスクを作成します。タスクの作成に関する詳細については、「ステップ 3: タスクを作成してデータを移行する」を参照してください。
データベースのパスワードの変更
ほとんどの状況では、ソースまたはターゲットエンドポイント用のデータベースのパスワードを変更するのは簡単です。移行またはレプリケーションタスクで現在使用しているエンドポイント用のデータベースのパスワードを変更する必要がある場合、そのプロセスは少し複雑になります。以下の手順は、その方法を示しています。
移行またはレプリケーションタスクでエンドポイント用のデータベースのパスワードを変更するには
-
にサインインします。AWS Management Console[()] を開くにはAWS DMSコンソールhttps://console.aws.amazon.com/dms/v2/
。 IAM ユーザーとしてサインインしている場合は、にアクセスするための適切なアクセス権限があることを確認します。AWS DMS。必要なアクセス権限の詳細については、「AWS DMS の使用に必要な IAM アクセス許可」を参照してください。
-
ナビゲーションペインで、[Tasks (タスク)] を選択します。
-
データベースのパスワードを変更するエンドポイントを使用するタスクを選択してから、[Stop] を選択します。
-
タスクが停止されている間、データベースの操作に使用するネイティブツールを使用して、エンドポイント用のデータベースのパスワードを変更できます。
-
DMS マネジメントコンソールに戻り、ナビゲーションペインから [Endpoints] を選択します。
-
パスワードを変更したデータベースのエンドポイントを選択してから、[Modify] を選択します。
-
[Password] ボックスに新しいパスワードを入力し、[Modify] を選択します。
-
ナビゲーションペインから [Tasks] を選択します。
-
先ほど停止したタスクを選択してから、[Start/Resume] を選択します。
-
タスクを続行する方法に応じて、[Start] または [Resume] のいずれかを選択してから、[Start task] を選択します。