Creación de una política de claves - AWS Key Management Service

Creación de una política de claves

Puede crear y administrar políticas de claves en la consola de AWS KMS o mediante operaciones de la API de AWS KMS, como CreateKey, ReplicateKey y PutKeyPolicy.

Al crear una clave KMS en la consola de AWS KMS, ésta le guía a través de los pasos para crear una política de claves basada en la política de claves predeterminada de la consola. Al utilizar las API CreateKey o ReplicateKey, si no se especifica una política de claves, estas API aplican la política de claves predeterminada para claves creadas mediante programación. Al usar la API PutKeyPolicy, es necesario especificar una política de claves.

Cada documento de política puede tener una o varias declaraciones de política. En el siguiente ejemplo se muestra un documento válido de política de claves con una declaración de política.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "DescribePolicyStatement", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/Alice" }, "Action": "kms:DescribeKey", "Resource": "*", "Condition": { "StringEquals": { "kms:KeySpec": "SYMMETRIC_DEFAULT" } } } ] }

Formato de la política de claves

Un documento de política de claves debe cumplir las siguientes reglas:

  • Pesar hasta 32 kilobytes (32 768 bytes)

  • El elemento Sid de una declaración de política de claves puede incluir espacios. (Se prohíben los espacios en el elemento Sid de un documento de política de IAM).

Un documento de política de claves solo puede incluir los siguientes caracteres:

  • Caracteres ASCII imprimibles

  • Caracteres imprimibles del conjunto de caracteres Basic Latin y Latin-1 Supplement

  • Caracteres especiales como la pestaña (\u0009), la fuente de línea (\u000A) y retorno de carro (\u000D)

Elementos de una política de claves

Un documento de política de claves debe tener los siguientes elementos:

Versión

Especifica la versión del documento de política de claves. Configure la versión en 2012-10-17 (la última versión).

Instrucción

Contiene las declaraciones de la política. Un documento de política de claves debe tener al menos una declaración.

Cada declaración de política de claves consta de hasta seis elementos. Los elementos Effect,Principal,Action, y Resource son necesarios.

Sid

(Opcional) El identificador de la declaración (Sid) una cadena arbitraria que puede utilizar para describir la declaración. El Sid en una política de claves puede incluir espacios. (No puede incluir espacios en un elemento Sid de política de IAM).

Efecto

(Obligatorio) Determina si desea permitir o denegar los permisos en la declaración de política. Los valores válidos son Allow o Deny. Si no permite el acceso de forma explícita a una clave KMS, el acceso se deniega implícitamente. También puede denegar explícitamente el acceso a una clave KMS. Puede hacer esto para asegurarse de que un usuario no pueda tener acceso a ella, aunque otra política le permita el acceso.

Principal

(Obligatorio) La entidad principal es la identidad que obtiene los permisos especificados en la declaración de política. Puede especificar Cuentas de AWS, usuarios de IAM, roles de IAM y algunos servicios de AWS como entidades principales en una política de claves. Los grupos de usuarios de IAM no son una entidad principal válida en ningún tipo de política.

Un valor de asterisco, como "AWS": "*", representa todas las identidades de AWS de todas las cuentas.

importante

No establezca la Entidad principal en un asterisco (*) en ninguna declaración de política de claves que permita permisos a menos que utilice condiciones para limitar la política de claves. Un asterisco da cada identidad en cada permiso de Cuenta de AWS para utilizar la clave de KMS, a menos que otra declaración de política lo deniegue explícitamente. Los usuarios de otras Cuentas de AWS pueden usar la clave de KMS siempre que tengan los permisos correspondientes en sus propias cuentas.

nota

Las prácticas recomendadas de IAM desalientan el uso de usuarios de IAM con credenciales a largo plazo. Siempre que sea posible, utilice los roles de IAM, que proporcionan credenciales temporales. Para obtener más información, consulte la sección Prácticas recomendadas de seguridad de IAM en la Guía del usuario de IAM;.

Cuando la entidad principal en una declaración de política de claves es una entidad principal de Cuenta de AWS se expresa como arn:aws:iam::111122223333:root", la declaración de la política no concede permisos a ninguna entidad principal de IAM. En su lugar, concede los permisos de Cuenta de AWS para utilizar las políticas de IAM a fin de delegar los permisos especificados en la política de claves. (Una entidad principal en formato arn:aws:iam::111122223333:root" no representa al usuario raíz de la cuenta de AWS, a pesar del uso de “root” en el identificador de la cuenta. Sin embargo, la entidad principal de la cuenta representa a la cuenta y a sus administradores, incluido el usuario raíz de la cuenta).

Cuando la entidad principal es otra Cuenta de AWS o sus entidades principales, los permisos solo son efectivos cuando la cuenta está habilitada en la región con la clave KMS y la política de clave. Para obtener información acerca de las regiones que no están habilitadas de forma predeterminada (“Regiones de adhesión”), consulte Administración de Regiones de AWS en la Referencia general de AWS.

Para permitir que una cuenta de Cuenta de AWS diferente o sus entidades principales utilicen una clave KMS, debe proporcionarle permisos mediante una política de claves y una política de IAM en la otra cuenta. Para obtener más información, consulte Permitir a los usuarios de otras cuentas utilizar una clave KMS.

Acción

(Obligatorio) Especifique las operaciones de la API que se permitirán o denegarán. Por ejemplo, la acción kms:Encrypt se corresponde con la operación de la AWS KMS Encrypt. Puede enumerar varias acciones en una declaración de política. Para obtener más información, consulte Referencia de permisos.

nota

Si falta el elemento Action requerido en una declaración de política de claves, la declaración de la política no tiene efecto. Una declaración de política de claves sin un elemento Action no se aplica a ninguna clave KMS.

Cuando a una declaración de política clave le falta su elemento Action, la consola de AWS KMS informa correctamente de un error, pero las API CreateKey y PutKeyPolicy funcionan correctamente, aunque la declaración de política no sea efectiva.

Recurso

(Obligatorio) En una política de claves, el valor del elemento Recurso es "*", que significa “esta clave KMS”. El asterisco ("*") identifica la clave KMS a la que se adjunta la política de clave.

nota

Si falta el elemento Resource requerido en una declaración de política de claves, la declaración de la política no tiene efecto. Una declaración de política de claves sin un elemento Resource no se aplica a ninguna clave KMS.

Cuando a una declaración de política clave le falta su elemento Resource, la consola de AWS KMS informa correctamente de un error, pero las API CreateKey y PutKeyPolicy funcionan correctamente, aunque la declaración de política no sea efectiva.

Condición

(Opcional) Las condiciones especifican requisitos que deben cumplirse para que se aplique una política de claves. Con las condiciones, AWS puede evaluar el contexto de una solicitud de la API para determinar si se aplica la declaración de política.

Para especificar condiciones, se utilizan claves de condición predeterminadas. AWS KMS es compatible con las claves de condición global de AWS y las claves de condición de AWS KMS. Para admitir el control de acceso basado en atributos (ABAC), AWS KMS proporciona claves de condición que controlan el acceso a una clave KMS basándose en etiquetas y alias. Para obtener más información, consulte ABAC para AWS KMS.

El formato de una condición es:

"Condition": {"condition operator": {"condition key": "condition value"}}

por ejemplo:

"Condition": {"StringEquals": {"kms:CallerAccount": "111122223333"}}

Para obtener más información sobre la sintaxis de las políticas de AWS, consulte la Referencia de políticas de IAM de AWS en la Guía del usuario de IAM.

Política de claves de ejemplo

En el siguiente ejemplo se muestra una política de claves completa para una clave KMS de cifrado simétrica. Puede utilizarlo como referencia mientras lee acerca de los conceptos de política de claves de este capítulo. Esta política de claves combina los ejemplos de declaraciones de política de la sección política de claves predeterminada anterior en una sola política de claves que lleva a cabo lo siguiente:

  • Permite a la Cuenta de AWS de ejemplo, 111122223333, acceso total a la clave KMS. Permite que la cuenta y sus administradores, incluido el usuario raíz de la cuenta (para emergencias), utilicen las políticas de IAM en la cuenta para permitir el acceso a la clave KMS.

  • Permite que el rol de IAM ExampleAdminRole administre la clave de KMS.

  • Permite que el rol de IAM ExampleUserRole utilice la clave KMS.

JSON
{ "Id": "key-consolepolicy", "Version":"2012-10-17", "Statement": [ { "Sid": "EnableIAMUserPermissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": "kms:*", "Resource": "*" }, { "Sid": "AllowKeyAdministratorsAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleAdminRole" }, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:TagResource", "kms:UntagResource", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion", "kms:RotateKeyOnDemand" ], "Resource": "*" }, { "Sid": "AllowKeyUse", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleUserRole" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "AllowAttachmentPersistentResources", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleUserRole" }, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": "true" } } } ] }