Skip to main content
Cada punto final de KMS comprueba una acción de IAM antes de realizar cualquier acción. Esta es la lista completa, no hay otros, y ningún punto final se salta la comprobación.
La referencia de la API muestra la acción en la página propia de cada punto final, por lo que no tiene que volver aquí para buscar una. Ambos provienen del mismo lugar: la llamada de autorización en el servicio, leída en el momento de la compilación.

Las acciones

Cada operación en una clave específica se autoriza contra CRN de esa clave, con las etiquetas de la clave disponibles como contexto de condición. Solo las dos operaciones a nivel de colección no lo son.

El sellado y la apertura son subvenciones diferentes

kms:Decrypt y kms:GenerateDataKey son acciones separadas de kms:GetKey precisamente para que las operaciones que devuelven material clave utilizable puedan ser concedidas estrechamente. Un componente que solo necesita sellar datos debe contener kms:Encrypt y kms:GenerateDataKey y nada más — entonces puede escribir, y nunca leer de vuelta. La misma división aparece en certificados, donde certificate:GetCertificateMaterial es separado de la lectura de un certificado.
kms:GenerateDataKey devuelve la nueva clave de datos en texto plano así como envuelto, porque el llamador tiene que usarla antes de tirarla. Trátelo como equivalente a kms:Decrypt en el radio de explosión cuando decida quién lo tiene, aunque los dos guarden direcciones diferentes.

El listado no se puede restringir

kms:ListKeys está autorizado contra la colección, no contra claves individuales, por lo que restringirlo por CRN o etiqueta no tiene efecto. Escopa las operaciones que usan una clave; la lista le dice a un llamador que existe una clave y nada más.

Recursos

Las acciones de KMS se comprueban con una forma de recurso:
La ranura de región está populada, a diferencia de DNS o certificados. Una clave existe en una región y solo se puede usar desde allí, por lo que una directiva escrita para una región no llega a las claves de otra región, incluso cuando los nombres coinciden.

Condiciones

Create lleva las etiquetas de la solicitud; cada acción con ámbito de tecla lleva las etiquetas que ya están en la tecla. Así que una política puede definir tanto lo que un llamador puede etiquetar una tecla como, y qué teclas existentes puede tocar:
  • basalt:RequestTag/<key> — en kms:CreateKey.
  • basalt:ResourceTag/<key> — en cada acción con ámbito a un CRN de clave.

Escribir una póliza

Una ruta de escritura que puede sellar pero nunca abrir:
Cercar una flota por etiqueta en lugar de por nombre:
kms:* incluye descifrado y eliminación. Un comodín otorga kms:Decrypt, kms:GenerateDataKey y kms:ScheduleKeyDeletion junto con todo lo demás. Enumera las acciones cuando la credencial pertenece a una carga de trabajo; un servicio que sella los datos no tiene ninguna razón para poder programar la destrucción de la clave.
Vea writing policies para el formato completo del documento y cada operador de condición.

Qué aspecto tiene una negación

Una comprobación fallida responde 403:
No le dice qué acción faltaba, deliberadamente — el mensaje es el mismo para cada denegación, por lo que no se puede usar para mapear lo que una credencial puede y no puede alcanzar. Busca la llamada que hiciste en la tabla anterior, y la acción que necesita es la que debes agregar.
Un 404 no es un 403 disfrazado. La propiedad se resuelve antes de la autorización: una clave perteneciente a otra cuenta responde KMS_KEY_NOT_FOUND porque no es suya para ver, y una que usted posee pero carece de la acción para respuestas 403. Si recibe un 404 en una clave que cree que es suya, compruebe la región y la cuenta a la que pertenece la credencial antes de comprobar la política.