View a markdown version of this page

Gestione las claves de API para cargas de trabajo sensibles a la seguridad - AWS Secrets Manager

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.

Gestione las claves de API para cargas de trabajo sensibles a la seguridad

AWS Secrets Manager le ayuda a administrar, recuperar y rotar las credenciales de las bases de datos, las credenciales de las aplicaciones, los tokens de OAuth, las claves de API y otros secretos a lo largo de su ciclo de vida. Esta página proporciona una guía prescriptiva para administrar las claves de API y las credenciales de terceros en cargas de trabajo sensibles a la seguridad. Combine la rotación automática con las AWS KMS claves administradas por los clientes y las políticas de IAM con menos privilegios. Configure también el acceso a los terminales de la VPC para minimizar la ventana de exposición y el radio de exposición de una credencial comprometida.

Almacene las claves de API en AWS Secrets Manager

En esta sección se describe cómo estructurar los secretos de las claves de API para una rotación y recuperación óptimas. Almacena cada clave de API como un secreto independiente con un valor JSON estructurado. Con esta estructura, tu aplicación puede recuperar campos individuales y Secrets Manager puede pasar los valores correctos a una función de rotación.

El siguiente ejemplo muestra una estructura JSON común para los secretos de las claves de API de terceros. Los campos reales dependen de los requisitos de tu proveedor. Revisa la documentación del proveedor para ver las credenciales y los metadatos específicos que necesitas almacenar.

{ "apiKey": "your-api-key-value", "apiKeyId": "key-identifier", "endpoint": "https://api.example.com/v1", "provider": "example-service" }
Ejemplo de estructura secreta para claves de API
Campo Ejemplo de valor Finalidad

apiKey

sk_live_abc123...

El valor de la credencial que usa tu aplicación para autenticarse con la API de terceros.

apiKeyId

key_001

Identificador de la clave por parte del proveedor. Se usa durante la rotación para crear una nueva clave y eliminar la anterior.

endpoint

https://api.example.com/v1

URL del punto final de la API. Almacene con la clave para que la recuperación devuelva todo lo que la aplicación necesita para conectarse.

provider

stripe

Nombre del proveedor. Es útil para la lógica de funciones de etiquetado, filtrado y rotación que gestiona varios proveedores.

Etiquete cada secreto con metadatos para respaldar las condiciones de las políticas de IAM y el filtrado organizacional. Por ejemplo, puedes etiquetar los secretos con el equipo propietario, el entorno y el ámbito de cumplimiento mediante la consola AWS CLI o:

aws secretsmanager tag-resource \ --secret-id prod/payments/stripe-api-key \ --tags Key=Team,Value=payments Key=Environment,Value=production \ Key=Provider,Value=stripe Key=Compliance,Value=pci-dss

Para obtener más información sobre la creación de secretos, consulteCrea un AWS Secrets Manager secreta.

La configuración de cifrado

Secrets Manager cifra todos los valores secretos en reposo mediante una AWS KMS clave. Para las cargas de trabajo sensibles a la seguridad, elija la clave de cifrado en función de sus requisitos de cumplimiento y control de acceso.

Opciones de clave de KMS para los secretos de las claves de API
Tipo de clave Cuándo se debe usar Consideraciones de seguridad

AWS clave gestionada (aws/secretsmanager)

Predeterminado para la mayoría de las cargas de trabajo. Sin costos adicionales ni gastos generales de administración de claves.

La política de claves se limita únicamente a las operaciones de Secrets Manager y no se puede modificar. No se puede usar para el acceso entre cuentas.

Clave administrada por el cliente

Requisitos de cumplimiento (por ejemplo, PCI DSS, HIPAA, SOC 2 u otros estándares aplicables). Cross-account compartir secretos. Requisitos clave de auditoría de uso.

Usted controla la política clave. Puede restringir los principales que pueden descifrar. Puede deshabilitar o programar la eliminación de claves independientemente del secreto. Proporciona un registro de auditoría independiente hasta el final.

Para las cargas de trabajo sensibles a la seguridad, utilice una clave gestionada por el cliente con las siguientes condiciones políticas clave:

  • kms:ViaService— Restrinja el uso de claves a las solicitudes que se originen en Secrets Manager (). secretsmanager.<region>.amazonaws.com

  • kms:EncryptionContext:SecretARN— Restrinja el descifrado a ARN secretos específicos haciendo coincidir el contexto de cifrado de Secrets Manager.

  • Claves separadas por límite de cumplimiento: utilice AWS KMS claves diferentes para los secretos en distintos ámbitos de cumplimiento (por ejemplo, PCI en comparación con las que no son PCI).

Para obtener una explicación completa del proceso de cifrado y descifrado, consulte. Cifrado y descifrado secretos en AWS Secrets Manager

Rotación automática de las claves de API

La rotación automática reduce el período de exposición de las credenciales comprometidas. Secrets Manager invoca una función de Lambda de forma programada. La función crea una nueva clave de API en el proveedor, actualiza el valor secreto y elimina la clave anterior.

Secrets Manager proporciona funciones de rotación gestionadas para algunos proveedores externos a través de secretos externos gestionados. Para obtener más información sobre esta función y la lista de proveedores compatibles, consulteSocios de secretos externos gestionados. En el caso de los proveedores que no admiten la rotación gestionada, debes implementar una función de rotación Lambda personalizada que llame a la API del proveedor para crear y eliminar claves.

Ciclo de vida de la función

Una función Lambda de rotación implementa cuatro pasos. Secrets Manager invoca la función una vez para cada paso y pasa un Step parámetro. Si algún paso falla, Secrets Manager reintenta automáticamente toda la rotación.

Pasos de rotación para las claves de API
Paso Acción para las claves de API Administración de errores

createSecret

Llame a la API del proveedor para crear una nueva clave. Guarda el nuevo valor de la clave en Secrets Manager con la etiqueta AWSPENDING provisional.

Si se produce un error en la creación de la clave, la rotación no pasa al siguiente paso. La clave existente permanece activa comoAWSCURRENT.

setSecret

En el caso de las claves de API creadas en el proveedor, este paso no suele ser obligatorio. Este paso se usa cuando se genera una clave aleatoria en Secrets Manager y se debe configurar en el proveedor, lo que no es el flujo de claves de API típico.

Si este paso falla, la rotación no continúatestSecret.

testSecret

Recupera el AWSPENDING valor de Secrets Manager y realiza una llamada API de prueba al proveedor para comprobar que la nueva clave funciona.

Si la prueba falla, borra la clave pendiente en el proveedor y genera una excepción.

finishSecret

AWSCURRENTDiríjase a la nueva clave. La llave antigua pasa aAWSPREVIOUS. Si lo desea, elimine la clave antigua en el proveedor.

Si la actualización de la etiqueta falla, la rotación no se completa. La nueva clave existe pero aún no está etiquetadaAWSCURRENT.

Para obtener la plantilla completa de la función de rotación y la guía de implementación, consulteFunciones de rotación de Lambda.

Configuración del programa de rotación

Establezca el intervalo de rotación en función de sus requisitos de cumplimiento y sus políticas de seguridad internas. Consulte las normas de cumplimiento aplicables a su carga de trabajo para determinar la frecuencia de rotación adecuada.

Utilice una ventana de rotación para controlar cuándo se produce la rotación. Esto evita que la rotación se ejecute durante los períodos de mayor tráfico o mantenimiento:

aws secretsmanager rotate-secret \ --secret-id prod/payments/stripe-api-key \ --rotation-rules '{ "ScheduleExpression": "cron(0 4 ? * SUN *)", "Duration": "2h" }'

Para obtener información sobre la sintaxis de las expresiones de programación, consulteProgramación de rotación.

Recupere los secretos de manera eficiente

Secrets Manager admite 10 000 transacciones por segundo en GetSecretValue las llamadas. La mayoría de las aplicaciones no sufren ningún tipo de limitación. Para las aplicaciones con volúmenes de llamadas muy altos o rutas sensibles a la latencia, utilice una solución de almacenamiento en caché para reducir las llamadas a la API y mejorar los tiempos de respuesta.

Secrets Manager proporciona clientes de almacenamiento en caché para varios lenguajes, así como una extensión Lambda que almacena en caché los secretos de forma local en el entorno de ejecución. Para obtener más información sobre las opciones de almacenamiento en caché, consulteObtener un valor secreto de Secrets Manager mediante Java con almacenamiento en caché del cliente, y. Obtener un valor secreto de Secrets Manager mediante Python con almacenamiento en caché del cliente Obtener un valor secreto de Secrets Manager mediante Go con almacenamiento en caché del cliente

Para todos los patrones de acceso, configure políticas de IAM que restrinjan secretsmanager:GetSecretValue los secretos específicos que necesita cada aplicación:

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:us-east-1:123456789012:secret:prod/payments/*", "Condition": { "StringEquals": { "aws:ResourceTag/Environment": "production" } } }] }

Refuerzo de la seguridad para cargas de trabajo delicadas

Las siguientes prácticas permiten proteger en profundidad las claves de API en entornos con requisitos de seguridad estrictos (por ejemplo, PCI DSS, SOC 2, HIPAA u otros marcos de cumplimiento aplicables):

Restrinja el acceso a la red con puntos finales de la VPC

Cree un punto final de VPC de interfaz para Secrets Manager para que la recuperación de datos secretos nunca atraviese la Internet pública. Aplica una política de punto final que restrinja los secretos a los que se puede acceder a través del punto final. Para obtener más información, consulte Uso de un punto final AWS Secrets Manager de VPC.

Aplica políticas de recursos a los secretos

Adjunta una política de recursos a cada secreto que niegue explícitamente el acceso a personas principales ajenas a tu cuenta o a puntos de enlace de VPC específicos. Esto proporciona un segundo límite de autorización independiente de las políticas de identidad de IAM.

Supervise el acceso secreto con

Registra automáticamente todas las llamadas a la API de Secrets ManagerGetSecretValue, incluidasPutSecretValue, yRotateSecret. En el caso de los secretos sensibles a la seguridad, cree una CloudWatch alarma de Amazon que se active en caso de GetSecretValue llamadas inesperadas, por ejemplo, llamadas desde direcciones IP de origen o entidades de IAM no reconocidas.

Utilízalo para una rotación fluida AWSPREVIOUS

Durante la rotación, Secrets Manager mantiene el valor clave anterior con la etiqueta de puesta en AWSPREVIOUS escena. Si su proveedor invalida la clave anterior al crear una clave nueva, configure la aplicación para que recurra a ella AWSPREVIOUS si AWSCURRENT devuelve un error de autenticación. Esto evita el tiempo de inactividad durante el breve período que transcurre entre la creación de la clave y la actualización de la etiqueta.

Valide las políticas de recursos antes de adjuntarlas

Los secretos sin una política de recursos ya bloquean el acceso público. Cuando adjuntes una política de recursos a tu secreto, usa la ValidateResourcePolicy API para asegurarte de que tu política no otorgue un acceso público generalizado. También puedes usar el BlockPublicPolicy parámetro with PutResourcePolicy para evitar adjuntar políticas que concedan acceso público. Usa la clave de aws:PrincipalOrgID condición en las políticas de recursos para impedir el acceso de personas ajenas a tu organización.

Preguntas frecuentes

Esta sección responde a las preguntas más frecuentes sobre la rotación de claves de API y la administración de secretos en AWS Secrets Manager.

¿Cómo puedo gestionar el período de superposición durante la rotación?

Esto solo es necesario si el proveedor invalida la clave existente al crear una nueva clave. Si el proveedor admite varias claves activas simultáneamente, ambas claves funcionan durante el período de rotación sin una lógica alternativa del lado de la aplicación. En el caso de los proveedores que invalidan la clave anterior, configura la aplicación para que vuelva a intentarlo AWSPREVIOUS si la clave actual arroja un error 401 o 403. Elimine la clave antigua del proveedor en este finishSecret paso solo después de confirmar que la nueva clave funciona.

¿Qué pasa si mi proveedor no admite la creación de claves programáticas?

Si el proveedor requiere la creación manual de claves (a través de una consola web, por ejemplo), no puedes automatizar completamente la rotación. En su lugar, usa una función de rotación que envíe una notificación (a través de Amazon Simple Notification Service) cuando llegue el momento de la rotación, solicitando al operador que cree la clave manualmente y actualice el valor secreto. Configura el calendario de rotaciones para que se ajuste a tus requisitos de rotación de conformidad y activa las CloudWatch alarmas de Amazon days_since_last_rotation para detectar las rotaciones incumplidas.

¿Cómo evito la limitación de la API al recuperar datos secretos?

Secrets Manager admite 10 000 transacciones por segundo. GetSecretValue La mayoría de las aplicaciones no sufren limitaciones. Si su aplicación realiza un volumen de llamadas excepcionalmente alto, utilice un cliente de almacenamiento en caché o la extensión Lambda Parameters and Secrets. Éstas almacenan en caché el valor secreto en la memoria y se actualizan periódicamente, lo que reduce la cantidad de llamadas a la API. Establezca el TTL de la caché en un valor inferior al intervalo de rotación para que la aplicación recoja nuevas claves tras la rotación.

¿Debo usar un secreto por entorno o un secreto con las versiones?

Usa secretos distintos para cada entorno (por ejemplo, prod/payments/stripe ydev/payments/stripe). Esto permite diferentes políticas de IAM, programas de rotación y claves de cifrado por entorno. Las versiones secretas (etiquetas de preparación) son para la administración del estado de rotación, no para la separación de entornos.