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

保管中の暗号化

AWS DMSは保存時の暗号化をサポートしており、では、サポート対象にコピーする前に Amazon S3 にレプリケートされたデータをプッシュするために使用するサーバー側の暗号化モードを指定できます。AWS DMSターゲットエンドポイント。この暗号化モードは、エンドポイントの追加の接続属性 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 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に直接サインインするには、パスワードとルートユーザーの E メールまたは IAM ユーザー名を使用します。ルートユーザーまたは IAM ユーザーのアクセスキーを使用して AWS にプログラム的にアクセスできます。AWS は、ユーザーの認証情報を使用してリクエストに暗号的で署名するための SDK とコマンドラインツールを提供します。AWS ツールを使用しない場合は、リクエストに自分で署名する必要があります。これには、インバウンド API リクエストを認証するためのプロトコル、署名バージョン 4 を使用します。リクエストの認証の詳細については、「AWS 全般のリファレンス」「署名バージョン 4 の署名プロセス」 を参照してください。

使用する認証方法を問わず、追加のセキュリティ情報の提供を要求される場合もあります。例えば、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 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 つのデータベースエンドポイントリソースに接続するため、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 で IAM ロールを選択

♪AWS CLIまたはAWSDMS API をデータベース移行するには、特定の IAM ロールをAWSの機能を活用する前にアカウントAWSDMS. これらのロールのうち 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 の 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:PutObjects3:GetObjects3:DeleteObject のアクセス許可を付与するだけでなく、s3:ListAllMyBucketss3: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 のタグが必要です。それ以外の場合、このユーザーはアクセスを拒否されます。条件キー名では大文字と小文字は区別されないため、条件タグキー OwnerOwnerowner に一致します。詳細については、「」を参照してください。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アクセスロールとそのシークレットの両方を検証するには、これらの権限が必要です。

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

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

  2. 選択ユーザーを選択し、[]ユーザー ID作成に使用CreateEndpointそしてModifyEndpointAPI コール。

  3. 「」からアクセス許可[] タブで、{} 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. IAM を使用して SecretAccessRole に対するユーザーのアクセス許可を検証します。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 を指定できます。詳細については、「」を参照してください。説明-秘密

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

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

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

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

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

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

  3. []シークレットタイプを選択新しいシークレットを保存する[()] ページで、他の種類のシークレット次に、プレーンテキストが使用されます

    注記

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

  4. プレーンテキストが使用されます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はデータベースにアクセスするためのポート番号です。db_server_nameは、次の例のように、Web 上のデータベースサーバー名 (アドレス) です。

      { "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_usernameOracle ASMにアクセスしているユーザーの名前です。asm_user_passwordは Oracle ASM ユーザーのパスワードであり、asm_server_nameは、次の例のように、ポートを含むWeb上の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をクリックし、シークレット ARN をの値として取得します。SecretsManagerSecretIdまたはSecretsManagerOracleAsmSecretId必要に応じて、エンドポイントデータベース接続および Oracle ASM(使用されている場合)へのアクセスを認証します。

シークレットアクセスポリシーとロールを作成して、SecretsManagerAccessRoleArnまたはSecretsManagerOracleAsmAccessRoleArnができる。AWS DMSにアクセスするにはAWS Secrets Manager適切なシークレットにアクセスするには

  1. にサインインします。AWS Management Console[()] を開くにはAWS Identity and Access Management(IAM) コンソールでhttps://console.aws.amazon.com/iam/

  2. 選択ポリシー次に、ポリシーの作成

  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の ARN ですかAWS KMS次の例のように、シークレットを暗号化するために使用するキー。

    { "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

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

  5. 選択ロール次に、ロールの作成

  6. 選択AWSサービスは、信頼されたエンティティのタイプとして使用します。

  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. シークレットマネージャー VPC エンドポイントを作成し、エンドポイントの DNS を書き留めます。シークレットマネージャーの VPC エンドポイントの作成の詳細については、「」を参照してください。VPC エンドポイントを介したSecrets Manager への接続 AWSSecrets Manager ユーザーガイド。

  2. レプリケーションインスタンスのセキュリティグループをシークレットマネージャー 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 Identity and Access のトラブルシューティング

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

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

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

次のエラー例は、mateojacksonIAM ユーザーは、コンソールを使用して、に関する詳細を表示しようとします。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 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 コンプライアンスプログラム」を参照してください。

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

AWS DMS を使用する際のお客様のコンプライアンス責任は、お客様のデータの機密性や貴社のコンプライアンス目的、適用される法律および規制によって決まります。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 にアクセスするためのインターフェイスエンドポイントを作成するには

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

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

  3. 選択AWSサービスを選択し、次の値を検索して選択します。サービス名この場合、AWS DMS次のような形式です。

    com.amazonaws.region.dms

    ここ,regionを指定します。AWS地域AWS DMSたとえば、実行するcom.amazonaws.us-west-2.dms

  4. を使用する場合VPCで、インターフェイスエンドポイントを作成する VPC を選択します。たとえば、vpc-12abcd34

  5. の値を選択します。アベイラビリティーゾーンそしてのためにサブネット ID。これらの値は、お客様が選択した場所を示す必要があります。AWS DMSエンドポイントを実行できます。たとえば、us-west-2a (usw2-az1)そしてsubnet-ab123cd4

  6. 選択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」。

  7. を使用する場合セキュリティグループで、エンドポイントに使用するグループを選択します。

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

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

    { "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-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 ロールを作成します。

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

  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

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

  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-endpointAmazon S3 へのアクセスを提供します。

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

  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 に基づいてポリシーを割り当てることができます。

次のポリシーでは、へのアクセスが拒否されます。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.htmlAWS Key Management Serviceデベロッパーガイド

デフォルトの KMS キー (aws/dms) は、レプリケーションインスタンスの初回起動時に [] からカスタム KMS キーを選択していない場合は、作成されます。アドバンストの セクションレプリケーションインスタンスの作成ページで. デフォルトの KMS キーを使用する場合、移行用の IAM ユーザーアカウントにはアクセス許可として kms:ListAliaseskms: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

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

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

  3. 次のいずれかのオプションを選択します。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 キーを作成することができます。

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.pemAmazon 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 コンソールを使用して証明書をインポートすることもできます。


                     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. エンドポイントへの接続の暗号化に使用する証明書をアップロードします。

    注記

    を使用して、証明書をアップロードすることもできます。AWS DMS[] を選択してエンドポイントを作成または変更する場合にコンソールを作成します。新しい CA 証明書の追加データベースエンドポイントの作成ページで.

    ターゲットとして 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. エンドポイントへの接続の暗号化に使用する証明書をアップロードします。

    注記

    を使用して、証明書をアップロードすることもできます。AWS DMS[] を選択してエンドポイントを作成または変更する場合にコンソールを作成します。新しい CA 証明書の追加データベースエンドポイントの作成ページで.

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

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

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

    
                             AWS Database Migration ServiceSSL 証明書の管理

  7. Modify を選択します。

  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] を選択します。