Amazon RDS Custom for SQL Server の環境設定 - Amazon Relational Database Service

Amazon RDS Custom for SQL Server の環境設定

Amazon RDS Custom for SQL Server DB インスタンスの DB インスタンスを作成および管理する前に、次のタスクを実行してください。

注記

前提条件を設定し Amazon RDS Custom for SQL Server を起動する方法のステップバイステップのチュートリアルについては、ブログ投稿の「Get started with Amazon RDS Custom for SQL Server using an CloudFormation template (Network setup)」および「Explore the prerequisites required to create an Amazon RDS Custom for SQL Server instance」を参照してください。

RDS Custom for SQL Server を設定するための前提条件

RDS Custom for SQL Server DB インスタンスを作成する前に、ご使用の環境がこのトピックで説明する要件を満たしていることを確認してください。CloudFormation テンプレートを使用して、AWS アカウント に前提条件を設定することもできます。詳細については、「AWS CloudFormation による設定」を参照してください。

RDS Custom for SQL Server では、以下の前提条件を設定する必要があります。

  • インスタンス作成に必要な AWS Identity and Access Management (IAM) アクセス許可を設定します。これは、RDS に create-db-instance リクエストを行うために必要な AWS Identity and Access Management (IAM) ユーザーまたはロールです。

  • RDS Custom for SQL Server DB インスタンスに必要な前提条件リソースを設定します。

    • RDS Custom インスタンスの暗号化に必要な AWS KMS キーを設定します。RDS Custom では、インスタンスの作成時に、暗号化にカスタマーマネージドキーが必要です。KMS キー ARN、ID、エイリアス ARN、またはエイリアス名は、RDS Custom DB インスタンスを作成するリクエストで kms-key-id パラメータとして渡されます。

    • RDS Custom for SQL Server DB インスタンスに必要なアクセス許可を設定します。RDS Custom は、作成時にインスタンスプロファイルを DB インスタンスにアタッチし、DB インスタンスでのオートメーションに使用します。インスタンスプロファイル名は、RDS Custom 作成リクエストで custom-iam-instance-profile に設定されます。AWS Management Console からインスタンスプロファイルを作成するか、インスタンスプロファイルを手動で作成できます。詳細については、AWS Management Console を使用したインスタンスプロファイルの自動作成およびIAM ロールおよびインスタンスプロファイルをマニュアルで作成するを参照してください。

    • RDS Custom for SQL Server の前提条件に従って、ネットワーク設定を構成します。RDS Custom インスタンスは、インスタンスの作成時に指定したサブネット (DB サブネットグループで設定) にあります。これらのサブネットは、RDS Custom インスタンスが RDS オートメーションに必要なサービスと通信できるように設定する必要があります。

注記

上記の要件については、アカウントレベルのアクセス許可を制限するサービスコントロールポリシー (SCP) がないことを確認してください。

使用しているアカウントが AWS 組織の一部の場合、アカウントレベルのアクセス許可を制限するサービスコントロールポリシー (SCP) がある場合があります。次の手順を使用して作成するユーザーおよびロールのアクセス許可が SCP によって制限されないことを確認します。

SCP の詳細については、AWS Organizations ユーザーガイド の「サービスコントロールポリシー (SCP)」を参照してください。describe-organization AWS CLI コマンドを使用して、アカウントが AWS 組織の一部かどうかをチェックします。

AWS Organizations の詳細については、AWS Organizations ユーザーガイドの「AWS Organizations の概要」を参照してください。

RDS Custom for SQL Server に適用される一般的な要件については、RDS Custom for SQL Server の一般的な要件を参照してください。

AWS Management Console を使用したインスタンスプロファイルの自動作成

RDS Custom では、RDS Custom for SQL Server DB インスタンスを起動するためのインスタンスプロファイルを作成し設定する必要があります。AWS Management Console を使用して、1 つのステップで新しいインスタンスプロファイルを作成しアタッチします。このオプションは、[データベースの作成][スナップショットの復元][特定時点への復元] コンソールページの「RDS Custom セキュリティ」セクションにあります。[新しいインスタンスプロファイルを作成] を選択して、インスタンスプロファイル名のサフィックスを指定します。AWS Management Console は、RDS Custom オートメーションタスクに必要なアクセス許可を持つ新しいインスタンスプロファイルを作成します。新しいインスタンスプロファイルを自動的に作成するには、ログインしている AWS Management Console ユーザーに iam:CreateInstanceProfileiam:AddRoleToInstanceProfileiam:CreateRoleiam:AttachRolePolicy のアクセス許可が必要です。

注記

このオプションは、AWS Management Console でのみ使用できます。CLI または SDK を使用している場合は、RDS Custom が提供する CloudFormation テンプレートを使用するか、インスタンスプロファイルを手動で作成します。詳細については、「IAM ロールおよびインスタンスプロファイルをマニュアルで作成する」を参照してください。

ステップ 1: IAM プリンシパルに必要なアクセス許可を付与する

RDS Custom インスタンスを作成するために必要なキーがあることを確認してください。コンソールまたは CLI を使用して RDS Custom for SQL Server DB インスタンスを作成するための IAM ロールまたは IAM ユーザー (IAM プリンシパル) には、DB インスタンスを正常に作成するために、次のいずれかのポリシーが必要です。

  • AdministratorAccess ポリシー

  • 追加のアクセス許可を持つAmazonRDSFullAccessポリシーです。

    iam:SimulatePrincipalPolicy cloudtrail:CreateTrail cloudtrail:StartLogging s3:CreateBucket s3:PutBucketPolicy s3:PutBucketObjectLockConfiguration s3:PutBucketVersioning kms:CreateGrant kms:DescribeKey

    RDS Custom は、インスタンスの作成時にこれらのアクセス許可を使用します。これらのアクセス許可は、RDS Custom オペレーションに必要なアカウントのリソースを設定します。

    kms:CreateGrant アクセス許可の詳細については、「AWS KMS key 管理」を参照してください。

次のサンプル JSON ポリシーにより、必要なアクセス許可が付与されます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ValidateIamRole", "Effect": "Allow", "Action": "iam:SimulatePrincipalPolicy", "Resource": "*" }, { "Sid": "CreateCloudTrail", "Effect": "Allow", "Action": [ "cloudtrail:CreateTrail", "cloudtrail:StartLogging" ], "Resource": "arn:aws:cloudtrail:*:*:trail/do-not-delete-rds-custom-*" }, { "Sid": "CreateS3Bucket", "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:PutBucketPolicy", "s3:PutBucketObjectLockConfiguration", "s3:PutBucketVersioning" ], "Resource": "arn:aws:s3:::do-not-delete-rds-custom-*" }, { "Sid": "CreateKmsGrant", "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:DescribeKey" ], "Resource": "*" } ] }

また、IAM プリンシパルにはIAM ロールに対する iam:PassRole アクセス許可が必要です。Custom DB インスタンスを作成するには、これをリクエストの custom-iam-instance-profile パラメータで渡されたインスタンスプロファイルにアタッチする必要があります。インスタンスプロファイルとそのアタッチされたロールは、後に ステップ 2: ネットワーキング、インスタンスプロファイル、および暗号化を構成する で作成されます。

注記

以前にリストされたアクセス許可が、IAM プリンシパルに関連付けられたサービスコントロールポリシー (SCP)、アクセス許可の境界、またはセッションポリシーによって制限されていないことを確認します。

ステップ 2: ネットワーキング、インスタンスプロファイル、および暗号化を構成する

IAM インスタンスプロファイルのロール、仮想プライベートクラウド (VPC)、および AWS KMS 対称暗号化キーは、次のプロセスのいずれかを使用して設定できます。

注記

アカウントが AWS Organizations の一部の場合は、インスタンスプロファイルロールに必要なアクセス許可がサービスコントロールポリシー (SCP) によって制限されていないことを確認します。

このトピックのネットワーク構成は、パブリックアクセスが可能でない DB インスタンスで最適に動作するように設計されています。VPC の外部から DB インスタンスに直接接続することはできません。

AWS CloudFormation による設定

セットアップを簡素化するために、CloudFormation スタックの作成に AWS CloudFormation テンプレートファイルを使用できます。CloudFormation テンプレートは、RDS Custom の要件に従って、すべてのネットワーク、インスタンスプロファイル、および暗号化リソースを作成します。

スタックの作成方法については、AWS CloudFormationユーザーガイドの「AWS CloudFormation コンソールでのスタックの作成」を参照してください。

AWS CloudFormation テンプレートを使用して Amazon RDS Custom for SQL Server を起動する方法のチュートリアルについては、AWS データベースブログの「AWS CloudFormation テンプレートを使用して Amazon RDS Custom for SQL Server を開始する」を参照してください。

CloudFormation に必要なパラメータ

CloudFormation で RDS Custom の前提条件となるリソースを設定するには、次のパラメータが必要です。

パラメータグループ パラメータ名 デフォルト値 説明
可用性の設定 前提条件設定の可用性設定を選択する マルチ AZ RDS Custom インスタンスのシングル AZ 構成またはマルチ AZ 構成で前提条件を設定するかどうかを指定します。1 つ以上のマルチ AZ DB インスタンスが必要な場合は、マルチ AZ 構成を使用する必要があります。
ネットワーク構成 VPC の IPv4 CIDR ブロック 10.0.0.0/16

VPC の IPv4 CIDR ブロック (または IP アドレス範囲) を指定します。この VPC は、RDS Custom DB インスタンスを作成し使用するように設定されています。

プライベートサブネット 1 (2 つのサブネットのうちの 1) の IPv4 CIDR ブロック 10.0.128.0/20

1 つ目のプライベートサブネットの IPv4 CIDR ブロック (または IP アドレス範囲) を指定します。これは、RDS Custom DB インスタンスを作成できる 2 つのサブネットのうちの 1 つです。このプライベートサブネットは、インターネットにアクセスすることはできません。

プライベートサブネット 2 (2 つのサブネットのうちの 2) の IPv4 CIDR ブロック 10.0.144.0/20

2 つ目のプライベートサブネットの IPv4 CIDR ブロック (または IP アドレス範囲) を指定します。これは、RDS Custom DB インスタンスを作成できる 2 つのサブネットのうちの 1 つです。このプライベートサブネットは、インターネットにアクセスすることはできません。

パブリックサブネットの IPv4 CIDR ブロック 10.0.0.0/20

パブリックサブネットの IPv4 CIDR ブロック (または IP アドレス範囲) を指定します。これは、EC2 インスタンスが接続できる RDS Custom DB インスタンスを作成できるサブネットのうちの 1 つです。このパブリックサブネットは、インターネットにアクセスできます。

RDP アクセス設定 ソースの IPv4 CIDR ブロック

ソースの IPv4 CIDR ブロック (または IP アドレス範囲) を指定します。これは、パブリックサブネットで EC2 インスタンスへの RDP 接続を行う IP 範囲です。設定されていない場合、EC2 インスタンスへの RDP 接続は設定されません。

RDS Custom for SQL Server インスタンスへの RDP アクセスをセットアップする いいえ

EC2 インスタンスから RDS Custom for SQL Server インスタンスへの RDP 接続を有効にするかどうかを指定します。デフォルトでは、EC2 インスタンスから DB インスタンスへの RDP 接続は設定されていません。

デフォルトの設定で CloudFormation スタックを正常に作成すると、スタックは AWS アカウント で以下のリソースを作成します。

  • RDS Custom で管理されるデータを暗号化するための対称暗号化 KMS キー。

  • インスタンスプロファイルは、RDS Custom に必要なアクセス許可を提供するために AmazonRDSCustomInstanceProfileRolePolicy を持つ IAM ロールに関連付けられています。詳細については、「AWS Managed Policy リファレンスガイド」の「AmazonRDSCustomServiceRolePolicy」を参照してください。

  • CloudFormation パラメータとして CIDR 範囲が指定された VPC。デフォルト値は 10.0.0.0/16 です。

  • パラメータで指定された CIDR 範囲を持つ 2 つのプライベートサブネット、および AWS リージョン の異なる 2 つのアベイラビリティーゾーン。サブネット CIDR のデフォルト値は 10.0.128.0/2010.0.144.0/20 です。

  • パラメータで指定された CIDR 範囲を持つ 1 つのパブリックサブネット。サブネット CIDR のデフォルト値は 10.0.0.0/20 です。EC2 インスタンスはこのサブネットに存在し、RDS Custom インスタンスへの接続に使用できます。

  • Amazon ドメインネームシステム (DNS) サーバーへドメイン名が解決された VPC の DHCP オプション設定。

  • 2 つのプライベートサブネットに関連付けられており、インターネットアクセスがないルートテーブル。

  • パブリックサブネットに関連付けられており、インターネットアクセスがあるルートテーブル。

  • パブリックサブネットへのインターネットアクセスを許可する VPC に関連付けられたインターネットゲートウェイ。

  • 2 つのプライベートサブネットに関連付けるネットワークアクセスコントロールリスト (ACL) と HTTPS および VPC の DB ポートに制限されたアクセス。

  • RDS Custom インスタンスに関連付けられた VPC セキュリティグループ。アクセスは、RDS Custom で必要な AWS のサービス エンドポイントへのアウントバウンド HTTPS、および EC2 インスタンスセキュリティグループからのインバウンド DB ポートに制限されます。

  • パブリックサブネット内の EC2 インスタンスは、VPC セキュリティグループに関連付けられます。RDS Custom インスタンスセキュリティグループへのアウトバウンド DB ポートのアクセスが制限されます。

  • RDS Custom で必要とされる AWS のサービス エンドポイント用に作成された VPC エンドポイントに関連付けらる VPC セキュリティグループ。

  • RDS カスタムインスタンスが作成される DB サブネットグループ。このテンプレートによって作成された 2 つのプライベートサブネットが DB サブネットグループに追加されます。

  • RDS Custom で必要とされる各 AWS のサービス エンドポイントの VPC エンドポイント。

可用性構成を multi-az に設定すると、上記に加えて次のリソースが作成されます。

  • プライベートサブネット間の通信を許可するネットワーク ACL ルール。

  • RDS Custom インスタンスに関連付けられた VPC セキュリティグループ内のマルチ AZ ポートへのインバウンドおよびアウトバウンドアクセス。

  • マルチ AZ 通信に必要な AWS サービスエンドポイントへの VPC エンドポイント。

さらに、RDP アクセス構成を設定すると、次のリソースが作成されます。

  • ソース IP アドレスからパブリックサブネットへの RDP アクセス構成:

    • ソース IP からパブリックサブネットへの RDP 接続を許可するネットワーク ACL ルール。

    • EC2 インスタンスに関連付けられた VPC セキュリティグループへのソース IP から RDP ポートへの入力アクセス。

  • パブリックサブネットの EC2 インスタンスからプライベートサブネットの RDS Custom インスタンスへの RDP アクセス構成:

    • パブリックサブネットからプライベートサブネットへの RDP 接続を許可するネットワーク ACL ルール。

    • EC2 インスタンスに関連付けられた VPC セキュリティグループから RDS Custom インスタンスに関連付けられた VPC セキュリティグループへの RDP ポートへのインバウンドアクセス。

RDS Custom for SQL Server の CloudFormation スタックを作成するには、以下の手順に従います。

AWS CloudFormation テンプレートファイルをダウンロードする

テンプレートファイルをダウンロードするには
  1. リンク custom-sqlserver-onboard.zip のコンテキスト (右クリック) メニューを開き、[Save Link As] (名前を付けてリンク先を保存) を選択します。

  2. ファイルをパソコンに保存し、解凍します。

CloudFormation を使用したリソースの設定

CloudFormation を使用してリソースを設定するには
  1. CloudFormation コンソール (https://console.aws.amazon.com/cloudformation) を開きます。

  2. 「スタックの作成」ウィザードを起動し、[Create Stack] (スタックの作成) を選択します。

    [Create stack] (スタックの作成) が表示されます。

  3. 前提条件 − テンプレートの準備で、テンプレートの準備完了を選択します。

  4. [Specify template] (テンプレートの指定) ページで、以下を実行します。

    1. [テンプレートソース] で、[テンプレートファイルのアップロード] を選択します。

    2. [ファイルを選択] に移動して、正しいファイルを選択します。

  5. [Next] を選択します。

    [Specify stack details] (DB 詳細の指定) ページが表示されます。

  6. [スタック名] に「rds-custom-sqlserver」と入力します。

  7. [Parameters] (パラメータ) では、以下を行います。

    1. デフォルトのオプションを保持するには、[Next] (次へ) を選択します。

    2. オプションを変更するには、適切な可用性構成を選択して、ネットワーク設定、RDP アクセス設定を選択し、[次へ] を選択します。

      パラメータを変更する前に、各パラメータの説明をよくお読みください。

    注記

    この CloudFormation スタックに 1 つ以上のマルチ AZ インスタンスを作成する場合は、CloudFormation スタックパラメータ、[前提条件設定の可用性構成を選択する]Multi-AZ に設定されていることを確認してください。CloudFormation スタックをシングル AZ として作成する場合は、最初のマルチ AZ インスタンスを作成する前に、CloudFormation スタックをマルチ AZ 設定に更新します。

  8. [スタックオプションの設定] ページで、[次へ] をクリックします。

  9. rds-custom-sqlserver のレビュー」ページで、以下を実行します。

    1. [機能] で、[AWS CloudFormation が IAM リソースを作成する可能性があることに同意する] チェックボックスをオンにします。

    2. [スタックの作成] を選択します。

注記

この AWS CloudFormation スタックから作成されたリソースは、リソースページから直接更新しないでください。AWS CloudFormation テンプレートを使用したこれらのリソースの今後の更新ができなくなります。

CloudFormation は、RDS Custom for SQL Server が必要とするリソースを作成します。スタックの作成に失敗した場合は、[Events] (イベント) タブを表示して、失敗したリソースの作成とそのステータスの理由を確認します。

コンソール内のこの CloudFormation スタックの[Outputs] (出力) タブには、RDS Custom for SQL Server DB インスタンスを作成するためのパラメータとして渡されるすべてのリソースに関する情報が含まれている必要があります。CloudFormation によって RDS カスタム DB インスタンス用に作成された VPC セキュリティグループと DB サブネットグループを必ず使用してください。デフォルトでは、RDS はデフォルトの VPC セキュリティグループをアタッチしようと試みます。これには、必要なアクセス許可がない可能性があります。

CloudFormation を使用してリソースを作成した場合は、手動設定 はスキップできます。

作成後に CloudFormation スタックの設定の一部を更新することもできます。更新できる設定は次のとおりです。

  • RDS Custom for SQL Server の可用性構成

    • 前提条件設定の可用性構成を選択する: このパラメータを更新して、シングル AZ 構成とマルチ AZ 構成を切り替えます。この CloudFormation スタックを 1 つ以上のマルチ AZ インスタンスで使用している場合は、スタックを更新してマルチ AZ 構成を選択する必要があります。

  • RDS Custom for SQL Server の RDP アクセス設定

    • ソースの IPv4 CIDR ブロック: このパラメータを更新することで、ソースの IPv4 CIDR ブロック (または IP アドレス範囲) を更新できます。このパラメータを空のままにすると、ソース CIDR ブロックからパブリックサブネットへの RDP アクセス設定が削除されます。

    • RDS Custom for SQL Server への RDP アクセスを設定する: EC2 インスタンスから RDS Custom for SQL Server インスタンスへの RDP 接続を有効または無効にします。

リソースを使用するすべての RDS Custom インスタンスをスタックから削除した後、CloudFormation スタックを削除できます。RDS Custom は CloudFormation スタックを追跡しないため、スタックリソースを使用する DB インスタンスがある場合、スタックの削除をブロックしません。スタックを削除する際に、スタックリソースを使用する RDS Custom DB インスタンスがないことを確認してください。

注記

CloudFormation スタックを消去すると、KMS キーを除き、そのスタックで作成されたすべてのリソースが消去されます。KMS キーは pending-deletion の状態になり、30 日後に削除されます。KMS キーを保持するには、CancelKeyDeletion オペレーションを 30 日間の猶予期間中に実行します。

手動設定

リソースを手動で設定する場合は、以下のタスクを実行します。

注記

セットアップを簡素化するために、CloudFormation スタックの作成に、手動設定ではなく AWS CloudFormation テンプレートファイルを使用できます。詳細については、「AWS CloudFormation による設定」を参照してください。

AWS CLI を使用してこのセクションを完了することもできます。その場合は、最新の CLI をダウンロードしてインストールします。

対称暗号化 AWS KMS キーであることを確認します。

RDS Custom には対称暗号化 AWS KMS key が必要です。SQL Server DB インスタンスの RDS Custom DB インスタンスを作成する際、KMS キー識別子を kms-key-id パラメータとして指定する必要があります。詳細については、「Amazon RDS Custom SQL Server の DB インスタンスの作成と接続」を参照してください。

次のオプションがあります。

  • AWS アカウント に既存のカスタマーマネージド KMS キーがある場合は、RDS Custom で使用できます。これ以上の操作は不要です。

  • RDS Custom エンジンのカスタマーマネージド対称暗号化 KMS キーを既に作成している場合は、同じ KMS キーを再利用できます。これ以上の操作は不要です。

  • アカウントに既存のカスタマーマネージド対称暗号化 KMS キーがない場合は、AWS Key Management Service デベロッパーガイドの「キーの作成」の手順に従って KMS キーを作成します。

  • CEV または RDS Custom DB インスタンスを作成していて、KMS キーが別の AWS アカウント にある場合は、必ず AWS CLI を使用してください。クロスアカウントの KMS キーでは AWS コンソールを使用できません。

重要

RDS Custom はAWSマネージド KMS キーに対応していません。

対称暗号化キーが、IAM インスタンスプロファイルの AWS Identity and Access Management (IAM) ロールに kms:Decrypt および kms:GenerateDataKey オペレーションへのアクセスを許可していることを確認してください。アカウントに新しい対称暗号化キーがある場合、変更は必要ありません。それ以外の場合は、対称暗号化キーのポリシーがこれらのオペレーションへのアクセスを許可していることを確認してください。

詳細については、「ステップ 4: RDS Custom for Oracle 用に IAM を設定する」を参照してください。

IAM ロールおよびインスタンスプロファイルをマニュアルで作成する

手動で作成したインスタンスプロファイルを使用して、RDS Custom インスタンスを起動できます。AWS Management Console でインスタンスを作成する場合は、このセクションをスキップします。AWS Management Console を使用すると、インスタンスプロファイルを作成して RDS Custom DB インスタンスにアタッチできます。詳細については、「AWS Management Console を使用したインスタンスプロファイルの自動作成」を参照してください。

インスタンスプロファイルを手動で作成する際は、インスタンスプロファイル名を custom-iam-instance-profile パラメータとして create-db-instance CLI コマンドに渡します。RDS Custom は、インスタンスプロファイルに関連付けられたロールを使用してオートメーションを実行し、インスタンスを管理します。

RDS Custom for SQL Server の IAM インスタンスプロファイルと IAM ロールを作成するには
  1. AWSRDSCustomSQLServerInstanceRoleという名前の IAM ロールを作成し、Amazon EC2 にこのロールを引き受けるように許可する信頼ポリシーを使用します。

  2. AWS 管理ポリシー AmazonRDSCustomInstanceProfileRolePolicyAWSRDSCustomSQLServerInstanceRole に追加します。

  3. AWSRDSCustomSQLServerInstanceProfile という名前のRDS Custom for SQL Server IAM インスタンスプロファイルを作成します。

  4. AWSRDSCustomSQLServerInstanceRoleをインスタンスプロファイルに追加します。

AWSRDSCustomSQLServerInstanceRole の IAM ロールを作成します。

以下の例では、AWSRDSCustomSQLServerInstanceRoleロールを作成します。信頼ポリシーにより、Amazon EC2 はロールを引き受けます。

aws iam create-role \ --role-name AWSRDSCustomSQLServerInstanceRole \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" } } ] }'
AWSRDSCustomsqlServerInstanceRole にアクセスポリシーを追加します。

必要なアクセス許可を付与するには、AWS マネージドポリシー AmazonRDSCustomInstanceProfileRolePolicyAWSRDSCustomSQLServerInstanceRole にアタッチします。AmazonRDSCustomInstanceProfileRolePolicy は、RDS Custom インスタンスにメッセージを送受信し、さまざまなオートメーションアクションを実行することを許可します。

注記

アクセスポリシーのアクセス許可が、インスタンスプロファイルロールに関連付けられた SCP またはアクセス許可の境界によって制限されていないことを確認します。

次の例では、AWS マネージドポリシー AWSRDSCustomSQLServerIamRolePolicyAWSRDSCustomSQLServerInstanceRole ロールにアタッチします。

aws iam attach-role-policy \ --role-name AWSRDSCustomSQLServerInstanceRole \ --policy-arn arn:aws:iam::aws:policy/AmazonRDSCustomInstanceProfileRolePolicy
RDS Custom for SQL Server インスタンスプロファイルを作成する

インスタンスプロファイルは、1 つの IAM ロールを含むコンテナです。RDS Custom はインスタンスプロファイルを使用してインスタンスにロールを渡します。

AWS Management Console を使用して Amazon EC2 のロールを作成する場合、ロールが作成サれる際、コンソールはインスタンスプロファイルを自動的に作成し、そのインスタンスプロファイルにロールと同じ名前を付けます。インスタンスプロファイルを作成し、AWSRDSCustomSQLServerInstanceProfileと名前を付けます。

aws iam create-instance-profile \ --instance-profile-name AWSRDSCustomSQLServerInstanceProfile
RDS Custom の SQL Server インスタンスプロファイルに AWSRDSCustomSQLServerInstanceRole を追加します。

以前に作成した AWSRDSCustomSQLServerInstanceProfile プロファイルに AWSRDSCustomInstanceRoleForRdsCustomInstance ロールを追加します。

aws iam add-role-to-instance-profile \ --instance-profile-name AWSRDSCustomSQLServerInstanceProfile \ --role-name AWSRDSCustomSQLServerInstanceRole

VPC をマニュアルで設定する

RDS Custom DB インスタンスは、Amazon EC2 インスタンスまたは Amazon RDS インスタンスと同様に、Amazon VPC サービスに基づく Virtual Private Cloud (VPC) にあります。独自の VPC を提供して設定します。したがって、インスタンスのネットワーク設定を完全に制御できます。

RDS Custom は DB インスタンスから他の AWS のサービス に通信を送信します。RDS Custom DB インスタンスを作成するサブネットから以下のサービスにアクセスできることを確認します。

  • Amazon CloudWatch

  • Amazon CloudWatch Logs

  • Amazon CloudWatch Events

  • Amazon EC2

  • Amazon EventBridge

  • Amazon S3

  • AWS Secrets Manager

  • AWS Systems Manager

マルチ AZ 配置を作成する場合

  • Amazon Simple Queue Service

RDS Custom は必要なサービスと通信できない場合、次のイベントを公開します。

Database instance in incompatible-network. SSM Agent connection not available. Amazon RDS can't connect to the dependent AWS services.
Database instance in incompatible-network. Amazon RDS can't connect to dependent AWS services. Make sure port 443 (HTTPS) allows outbound connections, and try again. "Failed to connect to the following services: s3 events"

incompatible-network エラーを避けるため、RDS Custom DB インスタンスと AWS のサービス 間の通信に関与している VPC コンポーネントが次の要件を満たしていることを確認します。

  • DB インスタンスは、ポート 443 で他の AWS のサービス へのアウトバウンド接続を行うことができます。

  • VPC は、RDS Custom DB インスタンスから発信されるリクエストへの受信レスポンスを許可します。

  • RDS Custom は、各 AWS のサービス に対してエンドポイントのドメイン名を正しく解決できます。

異なる RDS Custom DB エンジン用に VPC を既に設定している場合は、その VPC を再利用してこのプロセスをスキップできます。

次のように VPC セキュリティグループを設定します。

セキュリティグループは、VPC インスタンスの仮想ファイアウォールとして機能し、インバウンドトラフィックとアウトバウンドトラフィックを制御します。RDS Custom DB インスタンスには、インスタンスを保護するネットワークインターフェースにアタッチされたセキュリティグループがあります。セキュリティグループが RDS Custom と他の AWS のサービス との間の HTTPS トラフィックを許可していることを確認します。このセキュリティグループをインスタンス作成リクエストの vpc-security-group-ids パラメータとして渡します。

RDS Custom のセキュリティグループを設定するには
  1. AWS Management Console にサインインして、Amazon VPC コンソール (https://console.aws.amazon.com/vpc) を開きます。

  2. RDS Custom でデフォルトのセキュリティグループを使用するか、独自のセキュリティグループを作成することを許可します。

    詳細な手順については、「セキュリティグループを作成して VPC 内の DB インスタンスへのアクセスを提供する」を参照してください。

  3. セキュリティグループがポート 443 でアウトバウンド接続を許可していることを確認します。RDS Custom は、非独立型の AWS のサービス と通信するためにこのポートが必要です。

  4. プライベート VPC があり VPC エンドポイントを使用する場合は、DB インスタンスに関連付けられたセキュリティグループが VPC エンドポイントにポート 443 でアウトバウンド接続を許可していることを確認してください。また、VPC エンドポイントに関連付けられたセキュリティグループが、DB インスタンスからポート 443 でインバウンド接続を許可していることを確認します。

    着信接続が許可されていない場合、RDS Custom インスタンスは AWS Systems Manager および Amazon EC2 エンドポイントに接続できません。詳細については、AWS Systems Manager ユーザーガイドの「仮想プライベートクラウドエンドポイントの作成」を参照してください。

  5. RDS Custom for SQL Server マルチ AZ インスタンスの場合、DB インスタンスに関連付けられたセキュリティグループで、このセキュリティグループ自体へのインバウンド接続とアウトバウンド接続がポート 1120 で許可されていることを確認します。これは、マルチ AZ RDS Custom for SQL Server DB インスタンスでのピアホスト接続に必要です。

VPC セキュリティグループの詳細については、Amazon VPC デベロッパーガイドの「VPC のセキュリティグループ」を参照してください。

非独立型 AWS のサービス のエンドポイント設定

次の手順を使用して、すべてのサービスのエンドポイントを VPC に追加することをお勧めします。ただし、VPC がAWSサービスエンドポイントと通信する任意のソリューションを使用できます。例えば、ネットワークアドレス変換 (NAT) を使用したり、AWS Direct Connect。

RDS Custom が動作する AWS のサービス のエンドポイントを設定するには
  1. Amazon VPC コンソール (https://console.aws.amazon.com/vpc/) を開きます。

  2. ナビゲーションバーで、リージョンセレクターを使用して、AWS リージョンを選択します。

  3. ナビゲーションペインで、[エンドポイント] を選択します。メインペインで、[Create Endpoint (エンドポイントの作成)] を選択します。

  4. [Service category] (サービスカテゴリ) で、AWS のサービス を選択します。

  5. サービス名で、表に表示されたエンドポイントを選択します。

  6. [VPC] で、ユーザーの VPC を選択します。

  7. [Subnets (サブネット)] で、追加するサブネットを各アベイラビリティーゾーンから選択します。

    VPC エンドポイントは、複数のアベイラビリティーゾーンにまたがることができます。AWS は、VPC エンドポイントの Elastic Network Interface を、選択された各サブネットで作成します。各ネットワークインターフェースには ドメインネームシステム (DNS) ホスト名とプライベート IP アドレスがあります。

  8. セキュリティグループ」 で、セキュリティグループを選択または作成します。

    セキュリティグループを使用すると、エンドポイントへのアクセスを制御できます。これは、ファイアウォールを使用するのに似ています。セキュリティグループで、DB インスタンスからのインバウンド接続がポート 443 で許可されていることを確認してください。VPC セキュリティグループの詳細については、Amazon VPC ユーザーガイドの「VPC のセキュリティグループ」を参照してください。

  9. オプションで、VPC エンドポイントにポリシーをアタッチできます。エンドポイントポリシーは、接続している AWS のサービス へのアクセスを制御します。デフォルトのポリシーでは、すべてのリクエストがエンドポイントを通過することを許可します。カスタムポリシーを使用している場合は、DB インスタンスからのリクエストがポリシーで許可されていることを確認してください。

  10. [エンドポイントの作成] を選択します。

次の表では、VPC がアウトバウンド通信に必要なエンドポイントのリストを検索する方法について説明します。

サービス エンドポイントフォーマット メモとリンク

AWS Systems Manager

以下のエンドポイント形式を使用します。

  • ssm.region.amazonaws.com

  • ssmmessages.region.amazonaws.com

各リージョンのエンドポイントのリストについては、Amazon Web Services 全般のリファレンス の「AWS Systems Manager エンドポイントとクォータ」を参照してください。

AWS Secrets Manager

エンドポイントの形式secretsmanager.region.amazonaws.comを使用します。

各リージョンのエンドポイントのリストについては、Amazon Web Services 全般のリファレンス の「AWS Secrets Manager エンドポイントとクォータ」を参照してください。

Amazon CloudWatch

以下のエンドポイント形式を使用します。

  • CloudWatch メトリクスの場合は、monitoring.region.amazonaws.comを使用します

  • CloudWatch Eventsの場合は、events.region.amazonaws.comを使用します

  • CloudWatch Logs の場合は、logs.region.amazonaws.comを使用します

各リージョンのエンドポイントのリストについては、以下を参照してください。

Amazon EC2

以下のエンドポイント形式を使用します。

  • ec2.region.amazonaws.com

  • ec2messages.region.amazonaws.com

各リージョンのエンドポイントのリストについては、Amazon Web Services 全般のリファレンスの「Amazon EC2 エンドポイントとクォータ」を参照してください。

Amazon S3

エンドポイントの形式s3.region.amazonaws.comを使用します。

各リージョンのエンドポイントのリストについては、Amazon Web Services 全般のリファレンスの「Amazon Simple Storage Service エンドポイントとクォータ」を参照してください。

Amazon S3 のゲートウェイエンドポイントの詳細については、Amazon VPC デベロッパーガイドAmazon S3 におけるエンドポイントを参照してください。

アクセスポイントの作成方法については、「Amazon VPC デベロッパーガイド」の「Creating access points」(アクセスポイントの作成) を参照してください。

Amazon S3 のゲートウェイエンドポイントを作成する方法については、「ゲートウェイ VPC エンドポイント」を参照してください。

Amazon Simple Queue Service

エンドポイント形式 sqs.region.amazonaws.com を使用します。 各リージョンのエンドポイントのリストについては、「Amazon Simple Queue Service endpoints and quotas」を参照してください。
インスタンスメタデータサービスの設定

以下を実行して、インスタンスが に接続できることを確認します。

  • インスタンスメタデータにアクセスするために、Instance Metadata Service のバージョン 2 (IMDSv2) を使用します。

  • ポート 80 (HTTP) を介して IMDS リンク IP アドレスへのアウトバウンド通信を許可します。

  • http://169.254.169.254からのインスタンスメタデータのリクエスト、IMDSv2 のリンクです。

詳細については、Linux インスタンス用の Amazon EC2 ユーザーガイドのIMDSv2 の使用」を参照してください。

クロスインスタンスに関する制限

上記の手順に従ってインスタンスプロファイルを作成する際、AWS マネージドポリシー AmazonRDSCustomInstanceProfileRolePolicy を使用して、インスタンスの管理とモニタリングの自動化を可能にする必要なアクセス許可を RDS Custom に付与します。マネージドポリシーは、RDS Custom がオートメーションを実行するために必要なリソースにのみアクセス許可を付与します。マネージドポリシーを使用して新機能をサポートし、手動操作なしで既存のインスタンスプロファイルに自動的に適用されるセキュリティ要件に対応することをお勧めします。詳細については、「AWS マネージドポリシー: AmazonRDSCustom Instance ProfileRolePolicy」を参照してください。

AmazonRDSCustomInstanceProfileRolePolicy マネージドポリシーは、インスタンスプロファイルのクロスアカウントアクセスを制限しますが、同じアカウント内の RDS Custom インスタンス間で一部の RDS Custom マネージドリソースへのアクセスを許可する場合があります。必要な場合、アクセス許可の境界を使用して、インスタンス間のアクセスをさらに制限できます。アクセス許可の境界ポリシーは、アイデンティティベースのポリシーでエンティティに付与できるアクセス許可の上限を定義しますが、アクセス許可は付与しません。詳細については、「境界を設定した場合の有効なアクセス許可の評価」を参照してください。

例えば、次のポリシーでは、特定の AWS KMS キーへのアクセスをインスタンスプロファイルロールに制限し、異なる AWS KMS キーを使用しているインスタンス間で RDS Custom マネージドリソースへのアクセスを制限します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyOtherKmsKeyAccess", "Effect": "Deny", "Action": "kms:*", "NotResource": "arn:aws:kms:region:acct_id:key/KMS_key_ID" }, { "Sid": "NoBoundarySetByDefault", "Effect": "Allow", "Action": "*", "Resource": "*" } ] }
注記

アクセス許可の境界によって、AmazonRDSCustomInstanceProfileRolePolicy が RDS Custom に付与するアクセス許可がブロックされていないことを確認します。