

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Clave KMS \| Crear
<a name="deployment-advanced-kms-key-create"></a>

Cree una clave maestra de cliente (CMK) de AWS KMS mediante un documento de automatización de SSM con validación de políticas.

**Clasificación completa:** Implementación \| Componentes de pila avanzados \| Clave KMS \| Creación

## Detalles del tipo de cambio
<a name="ct-1d84keiri1jhg-DAKc-table"></a>


****  

|  |  | 
| --- |--- |
| ID de tipo de cambio | ct-1d84keiri1jhg | 
| Versión actual | 2.0 | 
| Duración de ejecución prevista | 30 minutos | 
| Aprobación de AWS | Obligatorio | 
| Aprobación del cliente | No obligatorio | 
| Modo de ejecución | Automatizado | 

## Información adicional
<a name="deployment-advanced-kms-key-create-info"></a>

### Cómo crear la clave de KMS
<a name="ex-kms-key-create-col"></a>

#### Creación de una clave de AWS KMS con la consola
<a name="kms-key-create-con"></a>

Captura de pantalla de este tipo de cambio en la consola AMS:

![](http://docs.aws.amazon.com/es_es/managedservices/latest/ctref/images/guiKmsKeyCreateCT.png)


Funcionamiento:

1. Vaya a la página **Crear RFC**: en el panel de navegación izquierdo de la consola AMS, haga clic **RFCs**para abrir la página de RFCs lista y, a continuación, haga clic en **Crear RFC**.

1. Elija un tipo de cambio (CT) popular en la vista predeterminada **de búsqueda de tipos de cambios** o seleccione un CT en la vista **Elegir por categoría**.
   + **Busque por tipo de cambio**: puede hacer clic en un CT popular del área de **creación rápida** para abrir inmediatamente la página **Ejecutar RFC**. Tenga en cuenta que no puede elegir una versión antigua de CT con Quick Create.

     Para ordenar CTs, utilice el área **Todos los tipos de cambios** en la vista **de tarjeta** o de **tabla**. En cualquiera de las vistas, seleccione una CT y, a continuación, haga clic en **Crear RFC** para abrir la página **Ejecutar RFC**. Si corresponde, aparece la opción **Crear con una versión anterior** junto al botón **Crear RFC**.
   + **Elegir por categoría**: seleccione una categoría, una subcategoría, un elemento y una operación, y se abrirá el cuadro de detalles del CT con la opción **Crear con una versión anterior, si corresponde**. Haga clic en **Crear RFC** para abrir la página **Ejecutar RFC**.

1. En la página **Ejecutar RFC**, abra el área del nombre del CT para ver el cuadro de detalles del CT. Se requiere un **asunto** (lo rellena automáticamente si elige su CT en la vista **Buscar tipos de cambios**). Abra el área **de configuración adicional** para añadir información sobre la RFC.

   En el área de **configuración de ejecución**, utilice las listas desplegables disponibles o introduzca valores para los parámetros necesarios. Para configurar los parámetros de ejecución opcionales, abra el área **de configuración adicional**.

1. Cuando haya terminado, haga clic en **Ejecutar**. Si no hay errores, aparecerá la página de la **RFC creada correctamente** con los detalles de la RFC enviada y el resultado inicial de la **ejecución**. 

1. Abra el área de **parámetros de ejecución** para ver las configuraciones que envió. Actualice la página para actualizar el estado de ejecución de la RFC. Si lo desea, cancele la RFC o cree una copia de la misma con las opciones de la parte superior de la página.

#### Creación de una clave de AWS KMS con la CLI
<a name="kms-key-create-cli"></a>

Funcionamiento:

1. Utilice Inline Create (se emite un `create-rfc` comando con todos los parámetros de RFC y de ejecución incluidos) o Template Create (se crean dos archivos JSON, uno para los parámetros de RFC y otro para los parámetros de ejecución) y emita el `create-rfc` comando con los dos archivos como entrada. Ambos métodos se describen aquí.

1. Envíe el `aws amscm submit-rfc --rfc-id {{ID}}` comando RFC: con el ID de RFC devuelto.

   Supervise el comando RFC:. `aws amscm get-rfc --rfc-id {{ID}}`

Para comprobar la versión del tipo de cambio, utilice este comando:

```
aws amscm list-change-type-version-summaries --filter Attribute=ChangeTypeId,Value={{CT_ID}}
```
**nota**  
Puede utilizar cualquier `CreateRfc` parámetro con cualquier RFC, forme o no parte del esquema del tipo de cambio. Por ejemplo, para recibir notificaciones cuando cambie el estado de la RFC, añada esta línea `--notification "{\"Email\": {\"EmailRecipients\" : [\"email@example.com\"]}}"` a la parte de los parámetros de la RFC de la solicitud (no a los parámetros de ejecución). Para ver una lista de todos los CreateRfc parámetros, consulta la referencia de la [API de administración de cambios de AMS](https://docs.aws.amazon.com/managedservices/latest/ApiReference-cm/API_CreateRfc.html).

*CREACIÓN EN LÍNEA*:

Ejecute el comando create RFC con los parámetros de ejecución incluidos en línea (comillas de escape al proporcionar los parámetros de ejecución en línea) y, a continuación, envíe el ID de RFC devuelto. Por ejemplo, puedes reemplazar el contenido por algo como esto:

Solo parámetros obligatorios:

```
aws amscm create-rfc --title {{my-app-key}} --change-type-id ct-1d84keiri1jhg --change-type-version {{1.0}} --execution-parameters '{"Description":"{{KMS key for my-app}}","VpcId":"{{VPC_ID}}","Name":"{{my-app-key}}","StackTemplateId":"stm-enf1j068fhg34vugt","TimeoutInMinutes":60,"Parameters":{"Description":"{{KMS key for my-app}}"}}'
```

*CREACIÓN DE PLANTILLA*:

1. Envía los parámetros de ejecución del esquema JSON para este tipo de cambio a un archivo; este ejemplo lo nombra CreateKmsKeyAutoParams .json.

   ```
   aws amscm get-change-type-version --change-type-id "ct-1d84keiri1jhg" --query "ChangeTypeVersion.ExecutionInputSchema" --output text > CreateKmsKeyAutoParams.json
   ```

1. Modifique y guarde el CreateKmsKeyAutoParams archivo. A continuación se muestran algunos ejemplos.

   **Conceda permiso a un usuario o a un rol para descifrar la CMK creada**. Ejemplos de parámetros de ejecución:

   ```
   {
     "Description": "{{KMS key for my-app}}",
     "VpcId": "{{VPC_ID}}”,
     "Name": "{{my-app-key-decrypt}}",
     "StackTemplateId": "stm-enf1j068fhg34vugt",
     "TimeoutInMinutes": 60,
     "Parameters": {
       "IAMPrincipalsRequiringDecryptPermissions": [
         "{{ARN:role/roleA}}",
         "{{ARN:user/userB}}",
         "{{ARN:role/instanceProfileA}}"
       ],
       "Description": "{{KMS key for my-app}}"
     }
   }
   ```

   Para ver la política resultante, consulte[Otorga permisos para descifrar con la CML a un usuario o rol de IAM](#kms-key-grant-cmk-decrypt-for-user-or-role).

   **Conceda a un usuario o rol permiso para cifrar mediante la CMK creada**. Ejemplos de parámetros de ejecución:

   ```
   {
     "Description": "{{KMS key for my-app}}",
     "VpcId": "{{VPC_ID}}",
     "Name": "{{my-app-key-encrypt}}",
     "Tags": [
       {
         "Key": "Name",
         "Value": "{{my-app-key}}"
       }
     ],
     "StackTemplateId": "stm-enf1j068fhg34vugt",
     "TimeoutInMinutes": 60,
     "Parameters": {
       "IAMPrincipalsRequiringEncryptPermissions": [
         "{{ARN:role/roleA}}",
         "{{ARN:user/userB}}",
         "{{ARN:role/instanceProfileA}}"
       ],
       "Description": "KMS key for my-app"
     }
   }
   ```

   Para ver la política resultante, consulte[Otorga permisos para cifrar con la CML a un usuario o rol de IAM](#kms-key-grant-cmk-encrypt-for-user-or-role).

   **Conceda permiso a un usuario, rol o cuenta para crear concesiones mediante la CMK creada**. Ejemplos de parámetros de ejecución:

   ```
   {
     "Description": "{{KMS key for my-app}}",
     "VpcId": "{{VPC_ID}}",
     "Name": "{{my-app-key-create-grants}}",
     "StackTemplateId": "stm-enf1j068fhg34vugt",
     "TimeoutInMinutes": 60,
     "Parameters": {
       "IAMPrincipalsRequiringGrantsPermissions": [
         "{{arn:aws:iam::999999999999:role/roleA}}",
         "{{888888888888}}"
       ],
       "Description": "{{KMS key for my-app}}"
     }
   }
   ```

   Para ver la política resultante, consulte[Otorga permisos para crear concesiones con la CMK para un usuario, un rol o una cuenta de IAM](#kms-key-create-cmk-grants-for-user-role-or-account).

   **Permita que solo los servicios de AWS que estén integrados con AWS KMS realicen la operación GRANT**. Ejemplos de parámetros de ejecución:

   ```
   {
     "Description": "{{KMS key for my-app}}",
     "VpcId": "{{VPC_ID}}",
     "Name": "{{my-app-key-limit-to-services}}",
     "StackTemplateId": "stm-enf1j068fhg34vugt",
     "TimeoutInMinutes": 60,
     "Parameters": {
       "IAMPrincipalsRequiringGrantsPermissions": [
         "{{arn:aws:iam::999999999999:role/roleA}}"
       ],
       "LimitGrantsToAWSResources": "true",
       "Description": "{{KMS key for my-app}}"
     }
   }
   ```

   Para ver la política resultante, consulte[Permita que solo los servicios de AWS que estén integrados con AWS KMS realicen la operación GRANT](#kms-key-limit-grants-to-aws-services).

   **Imponga el uso de claves de contexto de cifrado en las operaciones criptográficas**. Ejemplos de parámetros de ejecución:

   ```
   {
     "Description": "{{KMS key for my-app}}",
     "VpcId": "{{VPC_ID}}",
     "Name": "{{my-app-key-encryption-keys}}",
     "StackTemplateId": "stm-enf1j068fhg34vugt",
     "TimeoutInMinutes": 60,
     "Parameters": {
       "EnforceEncryptionContextKeys": "true",
       "Description": "{{KMS key for my-app}}"
     }
   }
   ```

   Para ver la política resultante, consulte[Imponga el uso de claves de contexto de cifrado en las operaciones criptográficas](#kms-key-enforce-encryption-context-keys).

   **Aplique una lista específica de claves de contexto de cifrado en las operaciones criptográficas**. Ejemplos de parámetros de ejecución:

   ```
   {
     "Description": "{{KMS key for my-app}}",
     "VpcId": "{{VPC_ID}}",
     "Name": "{{my-app-key-encryption-list}}",
     "StackTemplateId": "stm-enf1j068fhg34vugt",
     "TimeoutInMinutes": 60,
     "Parameters": {
       "AllowedEncryptionContextKeys": [
         "{{Name}}",
         "{{Application}}"
       ],
       "Description": "{{KMS key for my-app}}"
     }
   }
   ```

   Para ver la política resultante, consulte[Aplique una lista específica de claves de contexto de cifrado en las operaciones criptográficas](#kms-key-enforce-encryption-context-keys-list).

   **Permita que los servicios de AWS accedan a la CMK creada**. Ejemplos de parámetros de ejecución:

   ```
   {
     "Description" : "KMS key for my-app",
     "VpcId" : "VPC_ID",
     "Name" : "my-app-key-allow-aws-service-access",
     "StackTemplateId" : "stm-enf1j068fhg34vugt",
     "TimeoutInMinutes" : 60,
     "Parameters" : {
         "AllowServiceRolesAccessKMSKeys": [
             "ec2.us-east-1.amazonaws.com",
             "ecr.us-east-1.amazonaws.com"
       ],
       "Description": "KMS key for my-app"
     }
   }
   ```

   Para ver la política resultante, consulte[Permitir que los servicios de AWS accedan a la CMK creada](#kms-key-allow-services).

1. Envía el archivo JSON de la plantilla RFC a un archivo; en este ejemplo se le asigna el nombre CreateKmsKeyAutoRfc .json:

   ```
   aws amscm create-rfc --generate-cli-skeleton > CreateKmsKeyAutoRfc.json
   ```

1. Modifique y guarde el CreateKmsKeyAutoRfc archivo.json. Por ejemplo, puedes reemplazar el contenido por algo como esto:

   ```
   {
       "ChangeTypeId": "ct-1d84keiri1jhg",
       "ChangeTypeVersion": "1.0",
       "Title": "{{Create KMS Key}}"
   }
   ```

1. Cree el RFC, especificando el archivo CreateKmsKeyAuto RFC y el CreateKmsKeyAutoParams archivo:

   ```
   aws amscm create-rfc --cli-input-json file://CreateKmsKeyAutoRfc.json  --execution-parameters file://CreateKmsKeyAutoParams.json
   ```

   Recibirá el ID de la nueva RFC en la respuesta y podrá utilizarla para enviar y supervisar la RFC. Hasta que la envíe, la RFC permanece en estado de edición y no se inicia.

#### Consejos
<a name="ex-kms-key-create-tip"></a>
+ Este CT crea una CloudFormation pila con `DeletionPolicy: Retain` la que se crea una clave KMS. Por diseño, la clave KMS creada se conservará incluso después de eliminar la pila. Si está seguro de que quiere eliminar la clave de KMS, cree una RFC con el tipo de cambio [ct-2zxya20wmf5bf](schemas.md#ct-2zxya20wmf5bf-schema-section), Administración \| Componentes de pila avanzados \| Clave KMS \| Eliminar (automatización gestionada).
+ Este tipo de cambio es ExecutionMode =Automatizado, por lo que no requiere una revisión manual por parte de las operaciones de AMS y debería ejecutarse más rápido que KMS Key: Create (automatización gestionada); sin embargo, si se encuentra en una situación inusual, la versión manual podría funcionar mejor para usted. Consulte [KMS Key \| Create (automatización gestionada).](https://docs.aws.amazon.com/managedservices/latest/ctref/deployment-advanced-kms-key-create-review-required.html)
+ Este CT tiene un parámetro nuevo, AllowServiceRolesAccess KMSKeys, que proporciona a los servicios de AWS especificados acceso a la clave de KMS. El cambio se realizó porque la función de servicio de grupo de escalado automático no podía iniciar las instancias de EC2 con volúmenes de EBS cifrados debido a la falta de permisos para acceder a la clave KMS.
+ Para obtener más información sobre las claves de AWS KMS, consulte [AWS Key Management Service (KMS)](https://aws.amazon.com/kms/)[, AWS Key Management FAQs](https://aws.amazon.com/kms/faqs/) Service [y AWS Key Management](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html) Service Concepts.

#### KMS Key: cree las políticas resultantes
<a name="ex-kms-key-create-policies"></a>

En función de cómo creaste tu clave KMS, creaste políticas. Estas políticas de ejemplo coinciden con varios escenarios de creación de claves de KMS que se proporcionan en[Cómo crear la clave de KMS](#ex-kms-key-create-col).

##### Otorga permisos para descifrar con la CML a un usuario o rol de IAM
<a name="kms-key-grant-cmk-decrypt-for-user-or-role"></a>

El ejemplo de política resultante concede a los usuarios, roles o perfiles de instancia de IAM permiso para descifrar mediante la CMK:

```
{
          "Sid": "Allow decrypt using the key",
          "Effect": "Allow",
          "Principal": {
              "AWS": [
                "arn:aws:iam::999999999999:role/roleA",
                "arn:aws:iam::999999999999:user/userB",
                "arn:aws:iam::999999999999:role/instanceProfileA"
              ]
          },
          "Action": [
              "kms:DescribeKey",
              "kms:Decrypt"
          ],
          "Resource": "*"
}
```

Para ver los parámetros de ejecución necesarios para crear esta política con la clave KMS Create change type, consulte [Cómo crear la clave de KMS](#ex-kms-key-create-col)

##### Otorga permisos para cifrar con la CML a un usuario o rol de IAM
<a name="kms-key-grant-cmk-encrypt-for-user-or-role"></a>

El ejemplo de política resultante concede a los usuarios, roles o perfiles de instancia de IAM permiso para cifrar mediante la CMK:

```
{
          "Sid": "Allow encrypt using the key",
          "Effect": "Allow",
          "Principal": {
              "AWS": [
                "arn:aws:iam::999999999999:role/roleA",
                "arn:aws:iam::999999999999:user/userB",
                "arn:aws:iam::999999999999:role/instanceProfileA"
              ]
          },
          "Action": [
              "kms:DescribeKey",
              "kms:Encrypt",
              "kms:ReEncrypt*",
              "kms:GenerateDataKey",
              "kms:GenerateDataKeyWithoutPlaintext"
          ],
          "Resource": "*"
}
```

Para ver los parámetros de ejecución necesarios para crear esta política con la clave KMS Create change type, consulte [Cómo crear la clave de KMS](#ex-kms-key-create-col)

##### Otorga permisos para crear concesiones con la CMK para un usuario, un rol o una cuenta de IAM
<a name="kms-key-create-cmk-grants-for-user-role-or-account"></a>

Ejemplo de política resultante:

```
{
          "Sid": "Allow grants",
          "Effect": "Allow",
          "Principal": {
              "AWS": [
                  "arn:aws:iam::999999999999:role/roleA",
                  "arn:aws:iam::888888888888:root"
              ]
          },
          "Action": [
              "kms:CreateGrant",
              "kms:ListGrants",
              "kms:RevokeGrant"
          ],
          "Resource": "*"
}
```

Para ver los parámetros de ejecución necesarios para crear esta política con la clave KMS Create change type, consulte [Cómo crear la clave de KMS](#ex-kms-key-create-col)

##### Permita que solo los servicios de AWS que estén integrados con AWS KMS realicen la operación GRANT
<a name="kms-key-limit-grants-to-aws-services"></a>

Ejemplo de política resultante:

```
{
          "Sid": "Allow grants",
          "Effect": "Allow",
          "Principal": {
              "AWS": "arn:aws:iam::999999999999:role/roleA"
          },
          "Action": [
              "kms:CreateGrant",
              "kms:ListGrants",
              "kms:RevokeGrant"
          ],
          "Resource": "*"
      },
      {
          "Sid": "Deny if grant is not for AWS resource",
          "Effect": "Deny",
          "Principal": {
              "AWS": "*"
          },
          "Action": [
              "kms:CreateGrant",
              "kms:ListGrants",
              "kms:RevokeGrant"
          ],
          "Resource": "*",
          "Condition": {
              "Bool": {
                  "kms:GrantIsForAWSResource": "false"
              }
          }
      } }
}
```

Para ver los parámetros de ejecución necesarios para crear esta política con la clave KMS Create change type, consulte [Cómo crear la clave de KMS](#ex-kms-key-create-col)

##### Imponga el uso de claves de contexto de cifrado en las operaciones criptográficas
<a name="kms-key-enforce-encryption-context-keys"></a>

Ejemplo de política resultante:

```
{
          "Effect": "Deny",
          "Principal": {
              "AWS": "*"
          },
          "Action": [
              "kms:CreateGrant",
              "kms:Decrypt",
              "kms:Encrypt",
              "kms:GenerateDataKey*",
              "kms:ReEncrypt"
          ],
          "Resource": "*",
          "Condition": {
              "Null": {
                  "kms:EncryptionContextKeys": "true"
              }
          }
}
```

Para ver los parámetros de ejecución necesarios para crear esta política con la clave KMS Create change type, consulte [Cómo crear la clave de KMS](#ex-kms-key-create-col)

##### Aplique una lista específica de claves de contexto de cifrado en las operaciones criptográficas
<a name="kms-key-enforce-encryption-context-keys-list"></a>

Ejemplo de política resultante:

```
{
          "Effect": "Deny",
          "Principal": {
              "AWS": "*"
          },
          "Action": [
              "kms:CreateGrant",
              "kms:Decrypt",
              "kms:Encrypt",
              "kms:GenerateDataKey*",
              "kms:ReEncrypt"
          ],
          "Resource": "*",
          "Condition": {
              "StringEquals": {
                  "kms:EncryptionContextKeys": [
                    "Name",
                    "Application"
                  ]
              }
          }
      }
```

Para ver los parámetros de ejecución necesarios para crear esta política con la clave KMS Create change type, consulte [Cómo crear la clave de KMS](#ex-kms-key-create-col)

##### Permitir que los servicios de AWS accedan a la CMK creada
<a name="kms-key-allow-services"></a>

Ejemplo de política resultante:

```
{
    "Effect": "Allow",
    "Principal": {
        "AWS": "*"
    },
    "Action": [
        "kms:ListGrants",
        "kms:CreateGrant",
        "kms:DescribeKey",
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*"
    ],
    "Resource": "*",
    "Condition": {
        "StringEquals": {
            "kms:ViaService":  [
              "ec2.us-west-2.amazonaws.com",
              "ecr.us-east-1.amazonaws.com"
            ],
            "kms:CallerAccount": "111122223333"
        }
    }
}
```

Para ver los parámetros de ejecución necesarios para crear esta política con la clave KMS Create change type, consulte [Cómo crear la clave de KMS](#ex-kms-key-create-col)

## Parámetros de entrada de ejecución
<a name="deployment-advanced-kms-key-create-input"></a>

Para obtener información detallada sobre los parámetros de entrada de la ejecución, consulte[Esquema para el tipo de cambio ct-1d84keiri1jhg](schemas.md#ct-1d84keiri1jhg-schema-section).

## Ejemplo: parámetros necesarios
<a name="deployment-advanced-kms-key-create-ex-min"></a>

```
{
  "DocumentName": "AWSManagedServices-CreateKMSKey",
  "Region": "us-east-1",
  "Parameters": {
    "Description": "Test key"
  }
}
```

## Ejemplo: todos los parámetros
<a name="deployment-advanced-kms-key-create-ex-max"></a>

```
{
  "DocumentName": "AWSManagedServices-CreateKMSKey",
  "Region": "us-west-2",
  "Parameters": {
    "Alias": "testkey",
    "EnableKeyRotation": true,
    "Description": "Test key for validation",
    "PendingWindow": 30,
    "IAMPrincipalsRequiringDecryptPermissions": [
      "arn:aws:iam::123456789012:user/myuser",
      "arn:aws:iam::123456789012:role/myrole"
    ],
    "IAMPrincipalsRequiringEncryptPermissions": [
      "arn:aws:iam::123456789012:user/myuser",
      "arn:aws:iam::123456789012:role/myrole"
    ],
    "IAMPrincipalsRequiringGrantsPermissions": [
      "arn:aws:iam::123456789012:user/myuser",
      "arn:aws:iam::123456789012:role/myrole",
      "987654321098"
    ],
    "LimitGrantsToAWSResources": true,
    "EnforceEncryptionContextKeys": true,
    "AllowedEncryptionContextKeys": [
      "App",
      "Environment"
    ],
    "AllowServiceRolesAccessKMSKeys": [
      "ec2.us-west-2.amazonaws.com",
      "s3.us-west-2.amazonaws.com"
    ],
    "Tags": [
      {
        "Key": "foo",
        "Value": "bar"
      }
    ]
  }
}
```