

# Configuración del entorno para Amazon RDS Custom for Oracle
<a name="custom-setup-orcl"></a>

Antes de crear una instancia de base de datos de Amazon RDS Custom para Oracle, realice las siguientes tareas.

**Topics**
+ [Paso 1: crear o reutilizar una clave AWS KMS de cifrado simétrica](#custom-setup-orcl.cmk)
+ [Paso 2: descargar e instalar la AWS CLI](#custom-setup-orcl.cli)
+ [Paso 3: extraer las plantillas de CloudFormation para RDS Custom for Oracle](#custom-setup-orcl.cf.downloading)
+ [Paso 4: configurar IAM para RDS Custom for Oracle](#custom-setup-orcl.iam-vpc)
+ [Paso 5: otorgar los permisos necesarios al rol o usuario de IAM](#custom-setup-orcl.iam-user)
+ [Paso 6: configurar la VPC para RDS Custom for Oracle](#custom-setup-orc.vpc-config)

## Paso 1: crear o reutilizar una clave AWS KMS de cifrado simétrica
<a name="custom-setup-orcl.cmk"></a>

Las *claves administradas por el cliente* son AWS KMS keys en su cuenta de AWS que usted ha creado, posee y administra. Se requiere una clave KMS de cifrado simétrica administrada por el cliente para RDS Custom. Al crear una instancia de base de datos de RDS Custom for Oracle, debe proporcionar el identificador de clave KMS. Para obtener más información, consulte [Configuración de una instancia de base de datos para Amazon RDS Custom para Oracle](custom-creating.md).

Dispone de las opciones siguientes:
+ Si ya dispone de una clave KMS administrada por el cliente en su Cuenta de AWS, puede utilizarla con RDS Custom. No hay que hacer nada más.
+ Si ya ha creado una clave KMS de cifrado simétrica administrada por el cliente para un motor diferente de RDS Custom, puede reutilizar la misma clave. No hay que hacer nada más.
+ Si no tiene una clave KMS de cifrado simétrica administrada por el cliente en su cuenta, cree una clave KMS mediante las instrucciones de [Creating keys](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) (Creación de claves) en la *Guía para desarrolladores de AWS Key Management Service*.
+ Si va a crear una instancia de base de datos de CEV o RDS Custom y su clave de KMS está en una Cuenta de AWS diferente, asegúrese de utilizar la AWS CLI. No puede usar la consola de AWScon claves de KMS entre cuentas.

**importante**  
RDS Custom no admite claves KMS administradas por AWS.

Asegúrese de que su clave de cifrado simétrica proporcione acceso a las operaciones `kms:Decrypt` y `kms:GenerateDataKey` al rol de IAM AWS Identity and Access Management en su perfil de instancia de IAM. Si tiene una nueva clave de cifrado simétrica en su cuenta, no se requieren cambios. De lo contrario, asegúrese de que la política de claves de cifrado simétricas proporcione acceso a estas operaciones.

Para obtener más información, consulte [Paso 4: configurar IAM para RDS Custom for Oracle](#custom-setup-orcl.iam-vpc).

Para obtener más información sobre la configuración de IAM para RDS Custom para Oracle, consulte [Paso 4: configurar IAM para RDS Custom for Oracle](#custom-setup-orcl.iam-vpc).

## Paso 2: descargar e instalar la AWS CLI
<a name="custom-setup-orcl.cli"></a>

AWS le proporciona una interfaz de línea de comandos para utilizar las funciones de RDS Custom. Puede utilizar la versión 1 o la versión 2 de la AWS CLI.

Para obtener información acerca de cómo descargar e instalar la AWS CLI, consulte [Instalación o actualización de la versión más reciente de AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

Omita este paso si se da alguna de estas condiciones:
+ Si tiene pensado acceder a RDS Custom solo desde la Consola de administración de AWS.
+ Si ya ha descargado la AWS CLI para Amazon RDS o un motor de base de datos RDS Custom diferente.

## Paso 3: extraer las plantillas de CloudFormation para RDS Custom for Oracle
<a name="custom-setup-orcl.cf.downloading"></a>

Para simplificar la configuración, le recomendamos encarecidamente que utilice plantillas de CloudFormation para crear pilas de CloudFormation. Si planea configurar IAM y la VPC de forma manual, omita este paso.

**Topics**
+ [Paso 3a: descargar los archivos de plantilla de CloudFormation](#custom-setup-orcl.cf.dl-templates)
+ [Paso 3b: extraer custom-oracle-iam.json](#custom-setup-orcl.cf.downloading.ca-role)
+ [Paso 3c: extraer custom-vpc.json](#custom-setup-orcl.cf.downloading.ca-pn)

### Paso 3a: descargar los archivos de plantilla de CloudFormation
<a name="custom-setup-orcl.cf.dl-templates"></a>

Una plantilla de CloudFormation es una declaración de los recursos de AWS que componen una pila. La plantilla se almacena como un archivo JSON.

**Para descargar los archivos de plantilla de CloudFormation**

1. Abra el menú contextual (haga clic con el botón derecho del ratón) del enlace [custom-oracle-iam.zip](samples/custom-oracle-iam.zip) y elija **Save Link As** (Guardar enlace como).

1. Guarde el archivo en su computadora.

1. Repita los pasos anteriores para el enlace [custom-vpc.zip](samples/custom-vpc.zip).

   Si ya ha configurado la VPC para RDS Custom, omita este paso.

### Paso 3b: extraer custom-oracle-iam.json
<a name="custom-setup-orcl.cf.downloading.ca-role"></a>

Abre el archivo `custom-oracle-iam.zip` que ha descargado y, a continuación, extraiga el archivo `custom-oracle-iam.json`. El principio del archivo tiene el siguiente aspecto.

```
{
  "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"
              }
            }
          ]
        },...
```

### Paso 3c: extraer custom-vpc.json
<a name="custom-setup-orcl.cf.downloading.ca-pn"></a>

**nota**  
Si ya ha configurado una VPC existente para RDS Custom for Oracle, omita este paso. Para obtener más información, consulte [Configurar la VPC manualmente para RDS Custom for Oracle](#custom-setup-orcl.vpc).

Abra el archivo `custom-vpc.zip` que descargó y, a continuación, extraiga el archivo `custom-vpc.json`. El principio del archivo tiene el siguiente aspecto.

```
{
  "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"
        }
      }
    },...
```

## Paso 4: configurar IAM para RDS Custom for Oracle
<a name="custom-setup-orcl.iam-vpc"></a>

Debe utilizar un rol de IAM o un usuario de IAM (denominado entidad de IAM) para crear una instancia de base de datos de RDS Custom mediante la consola o la AWS CLI. Esta entidad de IAM debe tener los permisos necesarios para crear instancias.

Puede configurar IAM mediante CloudFormation o con pasos manuales.

**importante**  
Se recomienda encarecidamente que configure el entorno de RDS Custom para Oracle mediante CloudFormation. Esta técnica es la más sencilla y la menos propensa a errores.

**Topics**
+ [Configurar IAM mediante CloudFormation](#custom-setup-orcl.cf.config-iam)
+ [Cree manualmente el rol de IAM y el perfil de instancias](#custom-setup-orcl.iam)

### Configurar IAM mediante CloudFormation
<a name="custom-setup-orcl.cf.config-iam"></a>

Cuando utiliza la plantilla de CloudFormation para IAM, se crean los siguientes recursos necesarios:
+ Un perfil de instancia llamado `AWSRDSCustomInstanceProfile-region`
+ Un rol de servicio denominado `AWSRDSCustomInstanceRole-region`
+ Una política de acceso denominada `AWSRDSCustomIamRolePolicy` que está asociada al rol de servicio

**Para configurar IAM mediante CloudFormation**

1. Abra la consola de CloudFormation en [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/).

1. Inicie el Asistente de creación de pila y elija **Create Stack** (Crear pila).

1. En la página **Create stack** (Crear pila), proceda del modo siguiente:

   1. En **Prepare template** (Preparar plantilla), elija **Template is ready** (La plantilla está lista).

   1. Para **Origen de plantilla**, elija **Cargar un archivo de plantilla**.

   1. En **Elegir archivo**, vaya hasta **custom-oracle-iam.json** y, a continuación, selecciónelo.

   1. Elija **Siguiente**.

1. En la página **Specify stack Details** (Especificar detalles de pila), haga lo siguiente:

   1. En **Stack name** (Nombre de pila), ingrese **custom-oracle-iam**.

   1. Elija **Siguiente**.

1. En página **Configure stack options** (Configurar opciones de pila), elija **Next** (Siguiente).

1. En la página **Review custom-oracle-iam** (Revisar custom-oracle-iam), haga lo siguiente:

   1. Seleccione la casilla de verificación ****Reconozco que CloudFormation podría crear recursos de IAM con nombres personalizados****.

   1. Elija **Enviar**.

   CloudFormation crea los Roles de IAM que requiere RDS Custom for Oracle. En el panel de la izquierda, cuando **custom-oracle-iam** indique **CREATE\$1COMPLETE**, continúe con el paso siguiente.

1. En el panel izquierdo, elija **custom-oracle-iam**. En el panel de la derecha, haga lo siguiente:

   1. Elija **Información de la pila**. Su pila tiene un ID con el formato **arn:aws:cloudformation:*region*:*account-no*:stack/custom-oracle-iam/*identifier***.

   1. Seleccione **Recursos**. Debería ver lo siguiente:
      + Un perfil de instancia denominado **AWSRDSCustomInstanceProfile-*region***
      + Un rol de servicio denominado **AWSRDSCustomInstanceRole-*region***

      Al crear la instancia de base de datos de RDS Custom, tiene que proporcionar el ID del perfil de instancia.

### Cree manualmente el rol de IAM y el perfil de instancias
<a name="custom-setup-orcl.iam"></a>

La configuración es más sencilla cuando se utiliza CloudFormation. Sin embargo, también puede configurar IAM de forma manual. Para la configuración manual, haga lo siguiente:
+ [Paso 1: crear el rol de IAM AWSRDSCustomInstanceRoleForRdsCustomInstance](#custom-setup-orcl.iam.create-role).
+ [Paso 2: añadir una política de acceso a AWSRDSCustomInstanceRoleForRdsCustomInstance](#custom-setup-orcl.iam.add-policy).
+ [Paso 2: añadir una política de acceso a AWSRDSCustomInstanceRoleForRdsCustomInstance](#custom-setup-orcl.iam.create-profile).
+ [Paso 4: agregar AWSRDSCustomInstanceRoleForRdsCustomInstance a AWSRDSCustomInstanceProfile](#custom-setup-orcl.iam.add-profile).

#### Paso 1: crear el rol de IAM AWSRDSCustomInstanceRoleForRdsCustomInstance
<a name="custom-setup-orcl.iam.create-role"></a>

En este paso, se crea el rol con el formato de nomenclatura `AWSRDSCustomInstanceRole-region`. Mediante la política de confianza, Amazon EC2 puede asumir el rol. En el ejemplo siguiente, se supone que ha establecido la variable de entorno `$REGION` en la Región de AWS en la que desea crear la instancia de base de datos.

```
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"
          }
        }
      ]
    }'
```

#### Paso 2: añadir una política de acceso a AWSRDSCustomInstanceRoleForRdsCustomInstance
<a name="custom-setup-orcl.iam.add-policy"></a>

Al integrar una política en línea en un Rol de IAM, la política en línea se utiliza como parte de la política de acceso del rol (permisos). Usted crea la política `AWSRDSCustomIamRolePolicy` que permite a Amazon EC2 enviar y recibir mensajes y realizar diversas acciones.

En el siguiente ejemplo, se crea la política de acceso denominada `AWSRDSCustomIamRolePolicy`, y lo agrega al Rol de IAM `AWSRDSCustomInstanceRole-region`. En este ejemplo, se presupone que ha establecido las variables de entorno siguientes:

`$REGION`  
Defina esta variable en la Región de AWS en la que tiene pensado crear la instancia de base de datos.

`$ACCOUNT_ID`  
Defina esta variable en su número de Cuenta de AWS.

`$KMS_KEY`  
Defina esta variable en el Nombre de recurso de Amazon (ARN) de la AWS KMS key que desea utilizar para las instancias de base de datos de RDS Custom. Para especificar más de una clave KMS, agréguela a la sección `Resources` del estado de cuenta ID (Sid) 11.

```
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"
                }
            }
        }
    ]
}'
```

#### Paso 3: crear el perfil de instancia de RDS Custom AWSRDSCustomInstanceProfile
<a name="custom-setup-orcl.iam.create-profile"></a>

Un perfil de instancia es un contenedor que incluye un rol de IAM único. RDS Custom usa el perfil de instancia para pasar el rol a la instancia.

Si utiliza la CLI para crear un rol, debe crear el rol y el perfil de instancia de forma independiente, con nombres potencialmente diferentes. Cree su perfil de instancia de IAM de la siguiente manera y utilice el formato `AWSRDSCustomInstanceProfile-region` para el nombre. En el ejemplo siguiente, se supone que ha establecido la variable de entorno `$REGION` en la Región de AWS en la que desea crear la instancia de base de datos.

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

#### Paso 4: agregar AWSRDSCustomInstanceRoleForRdsCustomInstance a AWSRDSCustomInstanceProfile
<a name="custom-setup-orcl.iam.add-profile"></a>

Añada el rol de IAM al perfil de instancia que ha creado anteriormente. En el ejemplo siguiente, se supone que ha establecido la variable de entorno `$REGION` en la Región de AWS en la que desea crear la instancia de base de datos.

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

## Paso 5: otorgar los permisos necesarios al rol o usuario de IAM
<a name="custom-setup-orcl.iam-user"></a>

Asegúrese de que la entidad principal de IAM (usuario o rol) que crea la instancia de base de datos de RDS Custom o CEV tenga una de las siguientes políticas:
+ La política `AdministratorAccess`
+ La política `AmazonRDSFullAccess` con permisos necesarios para Amazon S3 y AWS KMS, creación de CEV y creación de instancias de base de datos

**Topics**
+ [Permisos de IAM necesarios para Amazon S3 y AWS KMS](#custom-setup-orcl.s3-kms)
+ [Permisos de IAM necesarios para crear una CEV](#custom-setup-orcl.cev)
+ [Permisos de IAM necesarios para crear una instancia de base de datos desde una CEV](#custom-setup-orcl.db)

### Permisos de IAM necesarios para Amazon S3 y AWS KMS
<a name="custom-setup-orcl.s3-kms"></a>

Para crear una CEV o instancias de base de datos de RDS Custom for Oracle, su entidad principal de IAM necesita acceder a Amazon S3 y AWS KMS. La siguiente política de JSON de muestra otorga los permisos necesarios.

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

------

Para obtener más información acerca del permiso de `kms:CreateGrant`, consulte [AWS KMS keyAdministración de](Overview.Encryption.Keys.md).

### Permisos de IAM necesarios para crear una CEV
<a name="custom-setup-orcl.cev"></a>

Para crear una CEV, su entidad principal de IAM necesita los siguientes permisos adicionales:

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

La siguiente política de JSON de ejemplo otorga permisos adicionales para acceder al bucket *my-custom-installation-files* y su contenido.

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

------

También puede conceder permisos similares para Amazon S3 a las cuentas del autor de la llamada mediante una política de bucket de S3.

### Permisos de IAM necesarios para crear una instancia de base de datos desde una CEV
<a name="custom-setup-orcl.db"></a>

Para crear una instancia de base de datos de RDS Custom para Oracle desde una CEV existente, la entidad principal de IAM necesita los siguientes permisos adicionales.

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

La siguiente política de JSON de ejemplo otorga los permisos necesarios para validar un rol de IAM y registrar la información en un 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-*"
        }
    ]
}
```

------

## Paso 6: configurar la VPC para RDS Custom for Oracle
<a name="custom-setup-orc.vpc-config"></a>

La instancia de base de datos de RDS Custom se encuentra en una nube privada virtual (VPC) basada en el servicio Amazon VPC, tal como lo es una instancia de Amazon EC2 o una instancia de Amazon RDS. Proporcione y configure su propia VPC. A diferencia de RDS Custom para SQL Server, RDS Custom para Oracle no crea listas de control de acceso ni grupos de seguridad. Debe asociar su propio grupo de seguridad, subredes y tablas de enrutamiento.

Puede configurar la nube privada virtual (VPC) mediante CloudFormation o un proceso manual.

**importante**  
Se recomienda encarecidamente que configure el entorno de RDS Custom para Oracle mediante CloudFormation. Esta técnica es la más sencilla y la menos propensa a errores.

**Topics**
+ [Configuración de la VPC mediante CloudFormation (recomendado)](#custom-setup-orcl.cf.config-vpc)
+ [Configurar la VPC manualmente para RDS Custom for Oracle](#custom-setup-orcl.vpc)

### Configuración de la VPC mediante CloudFormation (recomendado)
<a name="custom-setup-orcl.cf.config-vpc"></a>

Si ya ha configurado la VPC para otro motor de RDS Custom y desea reutilizar la VPC existente, omita este paso. En esta sección se presupone lo siguiente:
+ Ya ha utilizado CloudFormation para crear el rol y el perfil de instancia de IAM.
+ Conoce el ID de tabla de enrutamiento. 

  Para que una instancia de base de datos sea privada, debe estar en una subred privada. Para que una subred sea privada, no debe estar asociada a una tabla de enrutamiento que tenga una puerta de enlace de Internet predeterminada. Para obtener más información, consulte [Configurar tablas de enrutamiento](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html) en la *Guía del usuario de Amazon VPC*.

Cuando utiliza la plantilla de CloudFormation para su VPC, se crean los siguientes recursos:
+ Una VPC privada
+ Un grupo de subred denominado `rds-custom-private`
+ Los siguientes puntos de conexión de VPC, que su instancia de base de datos usa para comunicarse con los Servicios de AWS dependientes:
  + `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`

  Si está creando una implementación multi-AZ:
  + `com.amazonaws.region.sqs`
**nota**  
Para una configuración de red compleja con cuentas existentes, le recomendamos que configure el acceso a los servicios dependientes manualmente si el acceso aún no existe. Para obtener más información, consulte [Asegúrese de que su VPC pueda acceder a los Servicios de AWS dependientes](#custom-setup-orcl.vpc.endpoints).

**Para configurar la VPC mediante CloudFormation**

1. Abra la consola de CloudFormation en [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/).

1. Inicie el asistente Crear pila, seleccione **Crear pila** y, a continuación, **Con recursos nuevos (estándar)**.

1. En la página **Create stack** (Crear pila), proceda del modo siguiente:

   1. En **Prepare template** (Preparar plantilla), elija **Template is ready** (La plantilla está lista).

   1. Para **Template source** (Origen de plantilla), elija **Upload a template file** (Cargar un archivo de plantilla).

   1. Para **Choose file** (Elegir un archivo), navegue hasta y, a continuación, elija `custom-vpc.json`.

   1. Elija **Siguiente**.

1. En la página **Specify stack Details** (Especificar detalles de pila), haga lo siguiente:

   1. En **Stack name** (Nombre de pila), ingrese **custom-vpc**.

   1. Para **Parameters** (Parámetros), elija las subredes privadas que desea utilizar para las instancias de base de datos de RDS Custom.

   1. Elija el ID de VPC privado que se utilizará para las instancias de base de datos de RDS Custom.

   1. Ingrese la tabla de enrutamiento principal asociada a las subredes privadas.

   1. Elija **Siguiente**.

1. En la página **Configurar opciones de pila**, elija **Siguiente**.

1. En la página **Revisar custom-vpc**, elija **Enviar**.

   CloudFormation configura la VPC privada. En el panel de la izquierda, cuando **custom-vpc** indique **CREATE\$1COMPLETE**, continúe con el paso siguiente.

1. (Opcional) Revise los detalles de la VPC. En el panel **Pilas**, seleccione **custom-vpc**. En el panel de la derecha, haga lo siguiente:

   1. Elija **Información de la pila**. Su pila tiene un ID con el formato **arn:aws:cloudformation:*region*:*account-no*:stack/custom-vpc/*identifier***.

   1. Seleccione **Recursos**. Debería ver un grupo de subredes denominado **rds-custom-private** y varios puntos de conexión de VPC que utilizan el formato de nomenclatura **vpce-*string***. Cada punto de conexión se corresponde con un Servicio de AWS con el que RDS Custom necesita comunicarse. Para obtener más información, consulte [Asegúrese de que su VPC pueda acceder a los Servicios de AWS dependientes](#custom-setup-orcl.vpc.endpoints).

   1. Elija **Agregar parámetro**. Debería ver las subredes privadas, la VPC privada y la tabla de enrutamiento que especificó al crear la pila. Al crear una instancia de base de datos, tiene que proporcionar el ID de VPC y el grupo de subred.

### Configurar la VPC manualmente para RDS Custom for Oracle
<a name="custom-setup-orcl.vpc"></a>

Como alternativa a la creación de VPC de forma automática con CloudFormation, puede configurar la VPC de forma manual. Esta opción puede ser la mejor cuando se tiene una configuración de red compleja que utilice los recursos existentes.

**Topics**
+ [Asegúrese de que su VPC pueda acceder a los Servicios de AWS dependientes](#custom-setup-orcl.vpc.endpoints)
+ [Configurar el servicio de metadatos de instancia](#custom-setup-orcl.vpc.imds)

#### Asegúrese de que su VPC pueda acceder a los Servicios de AWS dependientes
<a name="custom-setup-orcl.vpc.endpoints"></a>

RDS Custom envía la comunicación desde la instancia de base de datos a otros Servicios de AWS. Asegúrese de que se pueda acceder a los siguientes servicios desde la subred en la que creó las instancias de base de datos de RDS Custom:
+ Amazon CloudWatch (`com.amazonaws.region.monitoring`)
+ Registros de Amazon CloudWatch (`com.amazonaws.region.logs`)
+ Eventos de Amazon CloudWatch (`com.amazonaws.region.events`)
+ Amazon EC2 (`com.amazonaws.region.ec2` y `com.amazonaws.region.ec2messages`)
+ Amazon S3 (`com.amazonaws.region.s3`)
+ AWS Secrets Manager (`com.amazonaws.region.secretsmanager`)
+ AWS Systems Manager (`com.amazonaws.region.ssm` y `com.amazonaws.region.ssmmessages`)

Si se crean implementaciones multi-AZ
+ Amazon Simple Queue Service (`com.amazonaws.region.sqs`)

Si RDS Custom no puede comunicarse con los servicios necesarios, publica los siguientes eventos:

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

Para evitar errores `incompatible-network`, asegúrese de que los componentes de la VPC que intervienen en la comunicación entre la instancia de base de datos de RDS Custom y Servicios de AWS cumplen los siguientes requisitos:
+ La instancia de base de datos puede realizar conexiones salientes en el puerto 443 a otros Servicios de AWS.
+ La VPC permite respuestas entrantes a solicitudes originadas en la instancia de base de datos de RDS Custom.
+ RDS Custom puede resolver correctamente los nombres de dominio de los puntos de conexión de cada Servicio de AWS.

Si ya ha configurado una VPC para otro motor de base de datos de RDS Custom, puede reutilizar esa VPC y omitir este proceso.

#### Configurar el servicio de metadatos de instancia
<a name="custom-setup-orcl.vpc.imds"></a>

Asegúrese de que la instancia pueda hacer lo siguiente:
+ Acceda al servicio de metadatos de la instancia mediante la versión 2 del servicio de metadatos de la instancia (IMDSv2).
+ Permitir comunicaciones salientes a través del puerto 80 (HTTP) a la dirección IP del enlace IMDS.
+ Solicitar metadatos de instancia de `http://169.254.169.254`, el enlace IMDSv2.

Para obtener más información, consulte [Utilizar IMDSv2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html) en la *Guía del usuario de Amazon EC2*.

RDS Custom para automatización de Oracle utiliza IMDSv2 de forma predeterminada, configurando `HttpTokens=enabled` en la instancia de Amazon EC2 subyacente. Sin embargo, puede usar IMDSv1 si lo desea. Para obtener más información, consulte [Configurar las opciones de metadatos de instancia](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-options.html) en la *Guía del usuario de Amazon EC2*.