

# Amazon RDS Custom for Oracle の環境設定
<a name="custom-setup-orcl"></a>

Amazon RDS Custom for Oracle DB インスタンスを作成する前に、次のタスクを実行します。

**Topics**
+ [ステップ 1: 対称暗号化 AWS KMS キーを作成または再利用する](#custom-setup-orcl.cmk)
+ [ステップ 2: AWS CLI をダウンロードしてインストールする](#custom-setup-orcl.cli)
+ [ステップ 3: RDS Custom for Oracle の CloudFormation テンプレートを抽出する](#custom-setup-orcl.cf.downloading)
+ [ステップ 4: RDS Custom for Oracle 用に IAM を設定する](#custom-setup-orcl.iam-vpc)
+ [ステップ 5: IAM ユーザーまたはロールに必要なアクセス許可を付与する](#custom-setup-orcl.iam-user)
+ [ステップ 6: RDS Custom for Oracle 用に VPC を設定する](#custom-setup-orc.vpc-config)

## ステップ 1: 対称暗号化 AWS KMS キーを作成または再利用する
<a name="custom-setup-orcl.cmk"></a>

*カスタマーマネージドキー*は、お客様が作成、所有、管理している AWS アカウントの AWS KMS keys です。RDS Custom にはカスタマーマネージド対称暗号化 KMS キーが必要です。RDS Custom for Oracle DB インスタンス作成の際、KMS キー 識別子を指定します。(詳しくは、「[Amazon RDS Custom for Oracle DB インスタンスの設定](custom-creating.md)」を参照してください。)

次のオプションがあります。
+ AWS アカウント に既存のカスタマーマネージド KMS キーがある場合は、RDS Custom で使用できます。これ以上の操作は不要です。
+ RDS Custom エンジンのカスタマーマネージド対称暗号化 KMS キーを既に作成している場合は、同じ KMS キーを再利用できます。これ以上の操作は不要です。
+ アカウントに既存のカスタマーマネージド対称暗号化 KMS キーがない場合は、*AWS Key Management Service デベロッパーガイド*の「[キーの作成](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)」の手順に従って 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 を設定する](#custom-setup-orcl.iam-vpc)」を参照してください。

RDS Custom for Oracle の IAM の設定の詳細については、「[ステップ 4: RDS Custom for Oracle 用に IAM を設定する](#custom-setup-orcl.iam-vpc)」を参照してください。

## ステップ 2: AWS CLI をダウンロードしてインストールする
<a name="custom-setup-orcl.cli"></a>

AWSは、RDS Custom 機能を使用するためのコマンドラインインターフェイスを提供します。AWS CLI のバージョン 1 またはバージョン 2 を使用できます。

AWS CLI のダウンロードおよびインストールについては、「[AWS CLI の最新バージョンを使用してインストールまたは更新を行う](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」を参照してください。

次のいずれかに該当する場合には、この手順をスキップします。
+ AWS マネジメントコンソール からのみ RDS Custom にアクセスする予定です。
+ Amazon RDS または異なる RDS Custom エンジンの AWS CLI を既にダウンロードしています。

## ステップ 3: RDS Custom for Oracle の CloudFormation テンプレートを抽出する
<a name="custom-setup-orcl.cf.downloading"></a>

セットアップを簡素化するために、CloudFormation テンプレートを使用して CloudFormation スタックを作成することを強くお勧めします。IAM と VPC を手動で設定する場合、このステップは省略します。

**Topics**
+ [ステップ 3a: CloudFormation テンプレートファイルをダウンロードする](#custom-setup-orcl.cf.dl-templates)
+ [ステップ 3b: custom-oracle-iam.json を抽出する](#custom-setup-orcl.cf.downloading.ca-role)
+ [ステップ 3c: custom-vpc.json を抽出する](#custom-setup-orcl.cf.downloading.ca-pn)

### ステップ 3a: CloudFormation テンプレートファイルをダウンロードする
<a name="custom-setup-orcl.cf.dl-templates"></a>

CloudFormation テンプレートとは、スタックを構成する AWS リソースの宣言です。テンプレートは JSON ファイルとして保存されます。

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

1. リンクのコンテキスト (右クリック) メニューから[[custom-oracle-iam.zip]](samples/custom-oracle-iam.zip) を開き、**[Save Link As]** (名前を付けてリンクを保存) を選択します。

1. ファイルをコンピュータに保存します。

1. リンクの [[custom-vpc.zip]](samples/custom-vpc.zip) に対して前のステップを繰り返します。

   VPC を RDS Custom 用に既に設定している場合は、このステップをスキップします。

### ステップ 3b: custom-oracle-iam.json を抽出する
<a name="custom-setup-orcl.cf.downloading.ca-role"></a>

ダウンロードした `custom-oracle-iam.zip` ファイルを開き、ファイル `custom-oracle-iam.json` を抽出します。ファイルの先頭は次のようになります。

```
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Parameters": {
    "EncryptionKey": {
      "Type": "String",
      "Default": "*",
      "Description": "KMS Key ARN for encryption of data managed by RDS Custom and by DB Instances."
    }
  },
  "Resources": {
    "RDSCustomInstanceServiceRole": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "RoleName": { "Fn::Sub": "AWSRDSCustomInstanceRole-${AWS::Region}" },
        "AssumeRolePolicyDocument": {
          "Version": "2012-10-17",		 	 	 
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "ec2.amazonaws.com"
              }
            }
          ]
        },...
```

### ステップ 3c: custom-vpc.json を抽出する
<a name="custom-setup-orcl.cf.downloading.ca-pn"></a>

**注記**  
RDS Custom for Oracle の VPC が既に設定されている場合、このステップは省略します。詳細については、「[RDS Custom for Oracle 用に VPC を手動で設定する](#custom-setup-orcl.vpc)」を参照してください。

ダウンロードした `custom-vpc.zip` ファイルを開き、ファイル `custom-vpc.json` を抽出します。ファイルの先頭は次のようになります。

```
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Parameters": {
    "PrivateVpc": {
      "Type": "AWS::EC2::VPC::Id",
      "Description": "Private VPC Id to use for RDS Custom DB Instances"
    },
    "PrivateSubnets": {
      "Type": "List<AWS::EC2::Subnet::Id>",
      "Description": "Private Subnets to use for RDS Custom DB Instances"
    },
    "RouteTable": {
      "Type": "String",
      "Description": "Route Table that must be associated with the PrivateSubnets and used by S3 VPC Endpoint",
      "AllowedPattern": "rtb-[0-9a-z]+"
    }
  },
  "Resources": {
    "DBSubnetGroup": {
      "Type": "AWS::RDS::DBSubnetGroup",
      "Properties": {
        "DBSubnetGroupName": "rds-custom-private",
        "DBSubnetGroupDescription": "RDS Custom Private Network",
        "SubnetIds": {
          "Ref": "PrivateSubnets"
        }
      }
    },...
```

## ステップ 4: RDS Custom for Oracle 用に IAM を設定する
<a name="custom-setup-orcl.iam-vpc"></a>

IAM ロールまたは IAM ユーザー (IAM エンティティと呼ばれます) を使用して、コンソールまたは AWS CLI を使用して RDS Custom DB インスタンスを作成します。この IAM エンティティには、インスタンス作成に必要なアクセス許可が付与されている必要があります。

IAM は、CloudFormation または手動ステップを使用して設定できます。

**重要**  
CloudFormation を使用して RDS Custom for Oracle 環境を設定することを強くお勧めします。この方法は、最も簡単でエラーが起こりにくいものです。

**Topics**
+ [CloudFormation を使用して IAM を設定する](#custom-setup-orcl.cf.config-iam)
+ [IAM ロールおよびインスタンスプロファイルをマニュアルで作成する](#custom-setup-orcl.iam)

### CloudFormation を使用して IAM を設定する
<a name="custom-setup-orcl.cf.config-iam"></a>

IAM 用の CloudFormation テンプレートを使用すると、次の必要なリソースが作成されます。
+ `AWSRDSCustomInstanceProfile-region` という名前のインスタンスプロファイル
+ `AWSRDSCustomInstanceRole-region` という名前のサービスロール
+ サービスロールにアタッチしている `AWSRDSCustomIamRolePolicy` という名前のアクセスポリシー

**CloudFormation を使用して IAM を設定するには**

1. CloudFormation コンソール ([https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/)) を開きます。

1. 「スタックの作成」 ウィザードを起動し、**スタックの作成**を選択します。

1. **[Create stack]** (スタックの作成) ページで、次の手順を実行します。

   1. **[Prepare template]** (テンプレートの準備) の **[Template is ready]** (テンプレートの準備が完了しました) を選択します。

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

   1. **[ファイルを選択]** に移動して、**[custom-oracle-iam.json]** を選択します。

   1. [**次へ**] を選択します。

1. **[スタックの詳細を指定]** ページで、以下を実行します。

   1. **[スタック名]** に「**custom-oracle-iam**」と入力します。

   1. [**次へ**] を選択します。

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

1. **[Review custom-oracle-iam]** (カスタムオラクル-IAM のレビュー) ページで、以下の作業を行います。

   1. ****[CloudFormation がカスタム名で IAM リソースを作成する可能性があることに同意する]**** チェックボックスを選択します。

   1. [**Submit**] を選択してください。

   CloudFormation は、 RDS Custom for Oracle が必要とする IAM ロールを作成します。左側のパネルで、**[custom-oracle-iam]** に **[CREATE\$1COMPLETE]** と表示されたら、次のステップに進みます。

1. 左のパネルで、**[custom-oracle-iam]** を選択します。右のパネルで、以下の操作を行います。

   1. **[スタック情報]** を選択します。スタックの ID は、**arn:aws:cloudformation:*region*:*account-no*:stack/custom-oracle-iam/*identifier*** という形式です。

   1. **[リソース]** をクリックします。次のように表示されます。
      + **AWSRDSCustomInstanceProfile-*region*** という名前のインスタンスプロファイル
      + **AWSRDSCustomInstanceRole-*region*** という名前のサービスロール

      RDS Custom DB インスタンスを作成するときは、インスタンスプロファイル ID を指定する必要があります。

### IAM ロールおよびインスタンスプロファイルをマニュアルで作成する
<a name="custom-setup-orcl.iam"></a>

CloudFormation を使用すると、設定が最も簡単になります。ただし、IAM は手動で設定することもできます。手動セットアップの場合は、以下を実行します。
+ [ステップ 1: AWSRDSCustomInstanceRoleForRdsCustomInstance IAM ロールを作成する](#custom-setup-orcl.iam.create-role).
+ [ステップ 2: AWSRDSCustomInstanceRoleForRdsCustomInstance にアクセスポリシーを追加します。](#custom-setup-orcl.iam.add-policy).
+ [ステップ 2: AWSRDSCustomInstanceRoleForRdsCustomInstance にアクセスポリシーを追加します。](#custom-setup-orcl.iam.create-profile).
+ [ステップ 4: AWSRDSCustomInstanceRoleForRdsCustomInstance を AWSRDSCustomInstanceProfile に追加する](#custom-setup-orcl.iam.add-profile).

#### ステップ 1: AWSRDSCustomInstanceRoleForRdsCustomInstance IAM ロールを作成する
<a name="custom-setup-orcl.iam.create-role"></a>

このステップでは、命名形式 `AWSRDSCustomInstanceRole-region` を使用してロールを作成します。信頼ポリシーを使用して、Amazon EC2 がロールを引き受けることができます。次の例では、DB インスタンスを作成する環境変数 `$REGION` を AWS リージョン に設定していることを前提としています。

```
aws iam create-role \
  --role-name AWSRDSCustomInstanceRole-$REGION \
  --assume-role-policy-document '{
    "Version": "2012-10-17",		 	 	 
      "Statement": [
        {
          "Action": "sts:AssumeRole",
          "Effect": "Allow",
          "Principal": {
              "Service": "ec2.amazonaws.com"
          }
        }
      ]
    }'
```

#### ステップ 2: AWSRDSCustomInstanceRoleForRdsCustomInstance にアクセスポリシーを追加します。
<a name="custom-setup-orcl.iam.add-policy"></a>

IAM ロールにインラインポリシーを埋め込むと、そのインラインポリシーはロールのアクセス (アクセス権) ポリシーの一部として使用されます。Amazon EC2 にメッセージの送受信やさまざまなアクションを許可する`AWSRDSCustomIamRolePolicy`ポリシーを作成します。

次の例では、`AWSRDSCustomIamRolePolicy`という名前のアクセスポリシーを作成し、IAM ロール`AWSRDSCustomInstanceRole-region`に追加します。この例では、次の環境変数を設定していることを前提としています。

`$REGION`  
この変数を DB インスタンスを作成する予定の AWS リージョン に設定します。

`$ACCOUNT_ID`  
この変数を自分の AWS アカウント 番号に設定します。

`$KMS_KEY`  
この変数を、RDS Custom DB インスタンスに使用する AWS KMS key の Amazon リソースネーム (ARN) に設定します。複数の KMS キーを指定するには、ステートメントID (Sid) 11 の`Resources`セクションに追加してください。

```
aws iam put-role-policy \
  --role-name AWSRDSCustomInstanceRole-$REGION \
  --policy-name AWSRDSCustomIamRolePolicy \
  --policy-document '{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "1",
            "Effect": "Allow",
            "Action": [
                "ssm:DescribeAssociation",
                "ssm:GetDeployablePatchSnapshotForInstance",
                "ssm:GetDocument",
                "ssm:DescribeDocument",
                "ssm:GetManifest",
                "ssm:GetParameter",
                "ssm:GetParameters",
                "ssm:ListAssociations",
                "ssm:ListInstanceAssociations",
                "ssm:PutInventory",
                "ssm:PutComplianceItems",
                "ssm:PutConfigurePackageResult",
                "ssm:UpdateAssociationStatus",
                "ssm:UpdateInstanceAssociationStatus",
                "ssm:UpdateInstanceInformation",
                "ssm:GetConnectionStatus",
                "ssm:DescribeInstanceInformation",
                "ssmmessages:CreateControlChannel",
                "ssmmessages:CreateDataChannel",
                "ssmmessages:OpenControlChannel",
                "ssmmessages:OpenDataChannel"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Sid": "2",
            "Effect": "Allow",
            "Action": [
                "ec2messages:AcknowledgeMessage",
                "ec2messages:DeleteMessage",
                "ec2messages:FailMessage",
                "ec2messages:GetEndpoint",
                "ec2messages:GetMessages",
                "ec2messages:SendReply"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Sid": "3",
            "Effect": "Allow",
            "Action": [
                "logs:PutRetentionPolicy",
                "logs:PutLogEvents",
                "logs:DescribeLogStreams",
                "logs:DescribeLogGroups",
                "logs:CreateLogStream",
                "logs:CreateLogGroup"
            ],
            "Resource": [
                "arn:aws:logs:'$REGION':'$ACCOUNT_ID':log-group:rds-custom-instance*"
            ]
        },
        {
            "Sid": "4",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::do-not-delete-rds-custom-*/*"
            ]
        },
        {
            "Sid": "5",
            "Effect": "Allow",
            "Action": [
                "cloudwatch:PutMetricData"
            ],
            "Resource": [
                "*"
            ],
            "Condition": {
                "StringEquals": {
                    "cloudwatch:namespace": [
                        "RDSCustomForOracle/Agent"
                    ]
                }
            }
        },
        {
            "Sid": "6",
            "Effect": "Allow",
            "Action": [
                "events:PutEvents"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Sid": "7",
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetSecretValue",
                "secretsmanager:DescribeSecret"
            ],
            "Resource": [
                "arn:aws:secretsmanager:'$REGION':'$ACCOUNT_ID':secret:do-not-delete-rds-custom-*",
                "arn:aws:secretsmanager:'$REGION':'$ACCOUNT_ID':secret:rds-custom!oracle-do-not-delete-*"
            ]
        },
        {
           "Sid": "8",
           "Effect": "Allow",
           "Action": [
             "s3:ListBucketVersions"
           ],
           "Resource": [
             "arn:aws:s3:::do-not-delete-rds-custom-*"
           ]
         },
         {
            "Sid": "9",
            "Effect": "Allow",
            "Action": "ec2:CreateSnapshots",
            "Resource": [
                "arn:aws:ec2:*:*:instance/*",
                "arn:aws:ec2:*:*:volume/*"
            ],
            "Condition": {
                "StringEquals": {
                    "ec2:ResourceTag/AWSRDSCustom": "custom-oracle"
                }
            }
          },
          {
            "Sid": "10",
            "Effect": "Allow",
            "Action": "ec2:CreateSnapshots",
            "Resource": [
                "arn:aws:ec2:*::snapshot/*"
            ]
          },
          {
            "Sid": "11",
            "Effect": "Allow",
            "Action": [
              "kms:Decrypt",
              "kms:GenerateDataKey"
            ],
            "Resource": [
              "arn:aws:kms:'$REGION':'$ACCOUNT_ID':key/'$KMS_KEY'"
            ]
          },
          {
            "Sid": "12",
            "Effect": "Allow",
            "Action": "ec2:CreateTags",
            "Resource": "*",
            "Condition": {
                "StringLike": {
                    "ec2:CreateAction": [
                        "CreateSnapshots"
                    ]
                }
            }
        },
        {
            "Sid": "13",
            "Effect": "Allow",
            "Action": [
                "sqs:SendMessage",
                "sqs:ReceiveMessage",
                "sqs:DeleteMessage",
                "sqs:GetQueueUrl"
            ],
            "Resource": "arn:aws:sqs:'$REGION':'$ACCOUNT_Id':do-not-delete-rds-custom-*",
            "Condition": {
                "StringLike": {
                    "aws:ResourceTag/AWSRDSCustom": "custom-oracle"
                }
            }
        }
    ]
}'
```

#### ステップ 3: RDS Custom インスタンスプロファイル AWSRDSCustomInstanceProfile を作成する
<a name="custom-setup-orcl.iam.create-profile"></a>

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

CLI を使用してロールを作成する場合、ロールとインスタンスプロファイルを別個のアクションとして作成します。名前は異なる可能性があります。IAM インスタンスプロファイルを次のように作成し、`AWSRDSCustomInstanceProfile-region` という形式を使用して名前を付けます。次の例では、DB インスタンスを作成する環境変数 `$REGION` を AWS リージョン に設定していることを前提としています。

```
aws iam create-instance-profile \
    --instance-profile-name AWSRDSCustomInstanceProfile-$REGION
```

#### ステップ 4: AWSRDSCustomInstanceRoleForRdsCustomInstance を AWSRDSCustomInstanceProfile に追加する
<a name="custom-setup-orcl.iam.add-profile"></a>

以前に作成したインスタンスプロファイルに IAM ロールを追加します。次の例では、DB インスタンスを作成する環境変数 `$REGION` を AWS リージョン に設定していることを前提としています。

```
aws iam add-role-to-instance-profile \
    --instance-profile-name AWSRDSCustomInstanceProfile-$REGION \
    --role-name AWSRDSCustomInstanceRole-$REGION
```

## ステップ 5: IAM ユーザーまたはロールに必要なアクセス許可を付与する
<a name="custom-setup-orcl.iam-user"></a>

CEV または RDS Custom DB インスタンスを作成する IAM プリンシパル (ユーザーまたはロール) に、次のいずれかのポリシーがあることを確認してください。
+ `AdministratorAccess` ポリシー
+ Amazon S3 と AWS KMS、CEV の作成、および DB インスタンスの作成に必要なアクセス許可を含む `AmazonRDSFullAccess` ポリシー。

**Topics**
+ [Amazon S3 と AWS KMS に必要な IAM アクセス許可](#custom-setup-orcl.s3-kms)
+ [CEV を作成するために必要な IAM アクセス許可](#custom-setup-orcl.cev)
+ [CEV から DB インスタンスを作成するために必要な IAM アクセス許可](#custom-setup-orcl.db)

### Amazon S3 と AWS KMS に必要な IAM アクセス許可
<a name="custom-setup-orcl.s3-kms"></a>

CEV または RDS Custom for Oracle DB インスタンスを作成するには、IAM プリンシパルで Amazon S3 および AWS KMS にアクセスする必要があります。次のサンプル JSON ポリシーにより、必要なアクセス許可が付与されます。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "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": "*"
        }
    ]
}
```

------

`kms:CreateGrant` アクセス許可の詳細については、「[AWS KMS key 管理](Overview.Encryption.Keys.md)」を参照してください。

### CEV を作成するために必要な IAM アクセス許可
<a name="custom-setup-orcl.cev"></a>

CEV を作成する場合、IAM プリンシパルで次の追加のアクセス許可が必要です。

```
s3:GetObjectAcl
s3:GetObject
s3:GetObjectTagging
s3:ListBucket
mediaimport:CreateDatabaseBinarySnapshot
```

次のサンプル JSON ポリシーにより、バケット *my-custom-installation-files* とその内容へのアクセスに必要な追加のアクセス許可が付与されます。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AccessToS3MediaBucket",
            "Effect": "Allow",
            "Action": [
                "s3:GetObjectAcl",
                "s3:GetObject",
                "s3:GetObjectTagging",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::my-custom-installation-files",
                "arn:aws:s3:::my-custom-installation-files/*"
            ]
        },
        {
            "Sid": "PermissionForByom",
            "Effect": "Allow",
            "Action": [
                "mediaimport:CreateDatabaseBinarySnapshot"
            ],
            "Resource": "*"
        }
    ]
}
```

------

S3 バケットポリシーを使用して、Amazon S3 への同様のアクセス許可を発信者のアカウントに付与できます。

### CEV から DB インスタンスを作成するために必要な IAM アクセス許可
<a name="custom-setup-orcl.db"></a>

既存の CEV から RDS Custom for Oracle DB インスタンスを作成する場合、IAM プリンシパルで次の追加のアクセス許可が必要です。

```
iam:SimulatePrincipalPolicy
cloudtrail:CreateTrail
cloudtrail:StartLogging
```

次のサンプル JSON ポリシーは、IAM ロールの検証や情報を AWS CloudTrail に記録するために必要なアクセス許可を付与します。

------
#### [ 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-*"
        }
    ]
}
```

------

## ステップ 6: RDS Custom for Oracle 用に VPC を設定する
<a name="custom-setup-orc.vpc-config"></a>

RDS Custom DB インスタンスは、Amazon EC2 インスタンスまたは Amazon RDS インスタンスと同様に、Amazon VPC サービスに基づく Virtual Private Cloud (VPC) にあります。独自の VPC を提供して設定します。RDS Custom for SQL Server とは異なり、RDS Custom for Oracle はアクセスコントロールリストやセキュリティグループを作成しません。独自のセキュリティグループ、サブネット、ルートテーブルをアタッチする必要があります。

仮想プライベートクラウド (VPC) は、CloudFormation または手動プロセスを使用して設定できます。

**重要**  
CloudFormation を使用して RDS Custom for Oracle 環境を設定することを強くお勧めします。この方法は、最も簡単でエラーが起こりにくいものです。

**Topics**
+ [CloudFormation を使用して VPC を設定する (推奨)](#custom-setup-orcl.cf.config-vpc)
+ [RDS Custom for Oracle 用に VPC を手動で設定する](#custom-setup-orcl.vpc)

### CloudFormation を使用して VPC を設定する (推奨)
<a name="custom-setup-orcl.cf.config-vpc"></a>

VPC を異なる RDS Custom エンジン用に既に設定し、既存の VPC を再利用する場合は、このステップをスキップします。このセクションでは、以下を想定しています。
+ 既に CloudFormation を使用して IAM インスタンスプロファイルとロールを作成しました。
+ ルートテーブル ID はわかっています。

  DB インスタンスがプライベートであるためには、プライベートサブネットに存在する必要があります。サブネットをプライベートにするには、デフォルトのインターネットゲートウェイを持つルートテーブルに関連付けてはいけません。詳細については、*Amazon VPC ユーザーガイド*の「[ルートテーブルを設定する](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html)」を参照してください。

VPC 用の CloudFormation テンプレートを使用すると、以下のリソースが作成されます。
+ プライベート VPC
+ `rds-custom-private` という名前のサブネットグループ
+ DB インスタンスが依存 AWS のサービス と通信するために使用する、以下の VPC エンドポイント。
  + `com.amazonaws.region.ec2messages`
  + `com.amazonaws.region.events`
  + `com.amazonaws.region.logs`
  + `com.amazonaws.region.monitoring`
  + `com.amazonaws.region.s3`
  + `com.amazonaws.region.secretsmanager`
  + `com.amazonaws.region.ssm`
  + `com.amazonaws.region.ssmmessages`

  マルチ AZ 配置を作成する場合。
  + `com.amazonaws.region.sqs`
**注記**  
既存のアカウントで複雑なネットワーク設定を行う場合、アクセスがまだ存在しない場合は、依存サービスへのアクセスを手動で設定することをお勧めします。詳細については、「[VPC が依存 AWS のサービスにアクセスできることを確認する](#custom-setup-orcl.vpc.endpoints)」を参照してください。

**CloudFormation を使用して VPC を設定するには**

1. CloudFormation コンソール ([https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/)) を開きます。

1. [スタックの作成] ウィザードを起動し、**[スタックの作成]** を選択し、**[新しいリソースを使用 (標準)]** を選択します。

1. **[Create stack]** (スタックの作成) ページで、次の手順を実行します。

   1. **[Prepare template]** (テンプレートの準備) の **[Template is ready]** (テンプレートの準備が完了しました) を選択します。

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

   1. **ファイルを選択**で、`custom-vpc.json`に移動して選択します。

   1. [**次へ**] を選択します。

1. **[スタックの詳細を指定]** ページで、以下を実行します。

   1. **[スタック名]** に「**custom-vpc**」と入力します。

   1. **パラメータ**で、RDS Custom DB インスタンスに使用するプライベートサブネットを選択します。

   1. RDS Custom DB インスタンスに使用するプライベート VPC ID を選択します。

   1. プライベートサブネットに関連付けられているメインルートテーブルを入力します。

   1. [**次へ**] を選択します。

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

1. **[確認]** ページで **[送信]** を選択します。

   CloudFormation は、プライベート VPC を設定します。左側のパネルで、**[custom-vpc]** に **[CREATE\$1COMPLETE]** と表示されたら、次のステップに進みます。

1. (オプション) VPC の詳細を確認します。**[スタック]** ペインで、**[custom-vpc]** を選択します。右のペインで、以下の操作を行います。

   1. **[スタック情報]** を選択します。スタックの ID は、**arn:aws:cloudformation:*region*:*account-no*:stack/custom-vpc/*identifier*** という形式です。

   1. **[リソース]** をクリックします。**rds-custom-private** という名前のサブネットグループと、**vpce-*string***という命名形式を使用する VPC エンドポイントがいくつか表示されるはずです。各エンドポイントは、RDS Custom が通信する必要のある AWS のサービス に対応しています。詳細については、「[VPC が依存 AWS のサービスにアクセスできることを確認する](#custom-setup-orcl.vpc.endpoints)」を参照してください。

   1. **[Parameters]** (パラメータ) を選択します。スタックを作成したときに指定したプライベートサブネット、プライベート VPC、ルートテーブルが表示されます。DB インスタンスを作成するときは、VPC ID とサブネットグループを指定する必要があります。

### RDS Custom for Oracle 用に VPC を手動で設定する
<a name="custom-setup-orcl.vpc"></a>

CloudFormation で VPC の作成を自動化する代わりに、VPC を手動で設定できます。このオプションは、既存のリソースを使用する複雑なネットワーク設定がある場合に最適です。

**Topics**
+ [VPC が依存 AWS のサービスにアクセスできることを確認する](#custom-setup-orcl.vpc.endpoints)
+ [インスタンスメタデータサービスの設定](#custom-setup-orcl.vpc.imds)

#### VPC が依存 AWS のサービスにアクセスできることを確認する
<a name="custom-setup-orcl.vpc.endpoints"></a>

RDS Custom は DB インスタンスから他の AWS のサービス に通信を送信します。RDS Custom DB インスタンスを作成するサブネットから以下のサービスにアクセスできることを確認します。
+ Amazon CloudWatch (`com.amazonaws.region.monitoring`)
+ Amazon CloudWatch Logs (`com.amazonaws.region.logs`)
+ Amazon CloudWatch Events (`com.amazonaws.region.events`)
+ Amazon EC2 (`com.amazonaws.region.ec2` および `com.amazonaws.region.ec2messages`)
+ Amazon S3 (`com.amazonaws.region.s3`)
+ AWS Secrets Manager (`com.amazonaws.region.secretsmanager`)
+ AWS Systems Manager (`com.amazonaws.region.ssm` および `com.amazonaws.region.ssmmessages`)

マルチ AZ 配置を作成する場合
+ Amazon Simple Queue Service (`com.amazonaws.region.sqs`)

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 を再利用してこのプロセスをスキップできます。

#### インスタンスメタデータサービスの設定
<a name="custom-setup-orcl.vpc.imds"></a>

以下を実行して、インスタンスが に接続できることを確認します。
+ インスタンスメタデータにアクセスするために、Instance Metadata Service のバージョン 2 (IMDSv2) を使用します。
+ ポート 80 (HTTP) を介して IMDS リンク IP アドレスへのアウトバウンド通信を許可します。
+ `http://169.254.169.254`からのインスタンスメタデータのリクエスト、IMDSv2 のリンクです。

詳細については、「*Amazon EC2 ユーザーガイド*」の「[IMDSv2 の使用](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html)」を参照してください。

RDS Custom for Oracle オートメーションでは、基盤となる Amazon EC2 インスタンスに`HttpTokens=enabled`を設定し、デフォルトで IMDSv2 を使用しています。ただし、必要に応じて IMDSv1 を使用することもできます。詳細については、「*Amazon EC2 ユーザーガイド*」の「[インスタンスメタデータオプションを設定する](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-options.html)」を参照してください。