Protección de credenciales sensibles para aplicaciones SP-API.

Cómo proteger las credenciales confidenciales

Abstracto

Garantizar que las credenciales confidenciales estén protegidas es fundamental para los desarrolladores de aplicaciones. La codificación de credenciales confidenciales es uno de los errores más comunes que cometen los desarrolladores al desarrollar una aplicación. La codificación de credenciales confidenciales, como claves API y claves secretas, puede conducir a la exposición de estas credenciales. Este documento técnico explica los riesgos de codificar datos confidenciales y describe los pasos que puede seguir para evitarlos.

Introducción

Este documento técnico aconseja a los desarrolladores que eviten codificar las credenciales como un atajo para ahorrar tiempo en el lanzamiento o lanzamiento de nuevas funciones y, como resultado, evitar incurrir en una brecha de seguridad. Este documento brinda orientación sobre las mejores prácticas, como la protección de capas, la rotación de claves de cifrado y el uso de repositorios de códigos privados en lugar de públicos.

Requisitos de la Política de Protección de Datos (DPP)

Tal como se establece en la Política de protección de datos de Amazon Seller Central en Prácticas de codificación segura ,

Los desarrolladores no deben codificar credenciales confidenciales en su código, incluidas claves de cifrado, claves de acceso secretas o contraseñas. Las credenciales confidenciales no deben exponerse en repositorios de códigos públicos. Los desarrolladores deben mantener entornos de prueba y producción separados.

Procesos de desarrollo de software

En el apuro por lanzar un nuevo producto, las organizaciones pueden sentir la necesidad de tomar atajos, incluidas las credenciales confidenciales de codificación . La codificación es el acto de guardar credenciales fuera de un almacén seguro de credenciales e incluye código fuente, wikis, documentación, hojas de cálculo y archivos de configuración. Credenciales es el término utilizado en este documento técnico para representar contraseñas, números de identificación personal (PIN), claves de shell seguro (SSH), claves de cifrado y descifrado, y claves o tokens de acceso secreto de Amazon SP-API.
El siguiente es un ejemplo de credenciales codificadas:

{
    "AssumedRoleUser": {
        "AssumedRoleId": "AROAIEGLQIIQUSJ2I5XRM:s3-access",
        "Arn": "arn:aws:sts:AWS-ACCOUNT-NUMBER:assumed-role/s3-read/s3-access"
    },
    "Credentials": {
        "SecretAccessKey":"wZJph6PX3snOZU4g6yfXdkyXp5m+nwkEtdUHwC3w",
        "SessionToken": "FQoGZXIvYXdzENr/////////REST-OF-TOKEN",
        "Expiration":"2018-11-O2T16:46:23Z",
        "AccessKeyId":"ASIAXQZXUENECYQBAAQG"
    }
}

Si bien codificar las credenciales puede parecer atractivo en el proceso de desarrollo, crea riesgos significativos en sus aplicaciones. Si un actor malicioso puede obtener acceso a su base de código, puede acceder fácilmente a las credenciales. El actor malintencionado puede controlar cualquier recurso al que las credenciales estén autorizadas para acceder.
Por ejemplo, si un actor malintencionado encuentra sus credenciales de Amazon SP-API, puede realizar llamadas a la API en su nombre sin su permiso o conocimiento. Es posible que nunca sepas si un atacante está usando tus credenciales, ya que es difícil discernir si el acceso es legítimo o ilegítimo.
En lugar de codificar las credenciales, los desarrolladores deben almacenar las credenciales en un almacén de credenciales seguro, como AWS Secrets Manager . Luego, su aplicación puede llamar al almacén de credenciales para recuperar las credenciales necesarias solo cuando sea necesario.

Selling Partner API applications

Los desarrolladores con aplicaciones Selling Partner API (SP-API) (SP-API) tienen un conjunto diferente de credenciales a tener en cuenta. Dado que SP-API se basa en AWS Identity and Access Management (IAM), el rol de AWS IAM o el usuario de IAM que se utilizó para crear su aplicación también debe estar protegido. SP-API también se basa en códigos de autorización, tokens de acceso y tokens de actualización de Login with Amazon (LWA).
Los desarrolladores deben proteger estas credenciales en consecuencia, ya que se les aplican los riesgos y las acciones de mitigación descritas en este documento técnico.

Protecciones de amazon

Amazon escanea continuamente Internet para detectar si las credenciales confidenciales, como las claves de acceso secretas de Amazon SP-API, están disponibles públicamente. Cuando Amazon encuentra claves en Internet, el equipo de seguridad de la información rota las claves para eliminar el riesgo y evitar que los actores maliciosos tomen el control de la aplicación. Amazon luego informa al propietario de la clave.
Dado que las claves se han puesto a disposición del público, Amazon asume que una parte no autorizada tiene acceso a las claves, lo que pone en riesgo a los propietarios de la aplicación SP-API de Amazon. Desafortunadamente, rotar las claves significa que el propietario de la aplicación tampoco puede controlar la aplicación.
Si bien este proceso ayuda a proteger las aplicaciones de Amazon SP-API, provoca una interrupción significativa para los propietarios de las aplicaciones y sus clientes. Por lo general, los desarrolladores de Amazon SP-API no se dan cuenta de que Amazon ha rotado sus claves y dedican un tiempo valioso a investigar la causa raíz de su interrupción. Un desarrollador puede tardar días en darse cuenta de que Amazon ha rotado las claves y ponerse en contacto con Amazon a través de un caso de soporte.
Este es el único mecanismo que tiene Amazon para proteger tus credenciales. Si otra credencial, como una clave de descifrado, se hiciera pública, Amazon no podría deshabilitar o rotar la clave. Un atacante tendría la autoridad para descifrar su información confidencial, sin el conocimiento de Amazon o de su desarrollador.
La mejor manera de evitar interrupciones tan estresantes en su negocio es evitar codificar sus credenciales.

Mejores prácticas para el manejo de credenciales

Las siguientes secciones analizan las mejores prácticas para el manejo de credenciales.

Protección en capas

Las credenciales deben estar protegidas en un almacén seguro de credenciales. Un almacén de credenciales ayuda a los usuarios a proteger los secretos necesarios para acceder a aplicaciones, servicios y recursos de TI. El uso de un almacén de credenciales permite a los usuarios tener un único repositorio de todos los secretos, lo que facilita la gestión para proteger, rotar, administrar y utilizar secretos en aplicaciones, servicios y otros recursos protegidos.
Dado que un solo almacén de credenciales puede almacenar todos sus secretos, es imperativo que el almacén de credenciales esté protegido. Para proteger su almacén de credenciales, limite el acceso solo a las personas y los recursos que requieren acceso. También querrá encriptar los contenidos con algoritmos de encriptación sólidos y registro, monitoreo y alertas sólidos que permitirán una respuesta rápida a incidentes.

Rotación de claves

Una mejor práctica es asumir que sus credenciales serán expuestas eventualmente. Mitigar este riesgo asumido estableciendo un cronograma de rotación de claves. La programación de la rotación de claves reduce la ventana de tiempo en que los usuarios no autorizados pueden usar una credencial comprometida. La rotación de claves suele ser provocada por acciones específicas, como que el titular de la clave renuncie a su rol de necesidad de saber, o el tiempo que una clave ha estado en servicio. Amazon recomienda rotar automáticamente las claves al menos cada 180 días.

Mantenimiento de repositorios de código privado

Un repositorio público expone su código al mundo, poniéndolo a disposición tanto de competidores como de atacantes. Esto presenta un riesgo significativo de exponer las operaciones normales de su empresa. Por este motivo, Amazon recomienda que, además de seguir las recomendaciones de este documento técnico, también se asegure de que sus repositorios permanezcan privados.
Puede ayudar a proteger las credenciales y los activos confidenciales manteniendo repositorios de códigos privados. Tenga en cuenta que esto es para proteger aún más sus activos. Un repositorio privado no protegerá completamente sus credenciales y no sustituye la implementación de las recomendaciones de este documento técnico.
Si es un desarrollador que usa GitHub como un servicio de alojamiento de repositorio de código principal, debe consultar Establecer la visibilidad del repositorio en la documentación de GitHub para aprender cómo hacer que sus repositorios sean privados. También debe considerar aprovechar las funciones integradas de estos servicios, incluido el escaneo automático de códigos para detectar credenciales y cifrar secretos de forma nativa .

Orientación para los clientes de Amazon Web Services (AWS)

La siguiente es una guía elaborada por Nathan Case, un estratega de seguridad de AWS, que asesora a los clientes de AWS sobre cómo proteger sus credenciales.

Cuando crea aplicaciones en AWS, puede usar roles de AWS IAM para entregar credenciales temporales para llamar a los servicios de AWS. Sin embargo, algunas aplicaciones requieren credenciales más duraderas, como contraseñas de bases de datos u otras API keys. Si este es el caso, nunca debe codificar estos secretos en la aplicación ni almacenarlos en el código fuente.

Puede utilizar AWS Secrets Manager para controlar la información en su aplicación. Secrets Manager le permite rotar, administrar y recuperar credenciales de base de datos, API keys y otros secretos a lo largo de su ciclo de vida. Los usuarios y las aplicaciones pueden recuperar secretos con una llamada a las Secrets Manager APIs, lo que elimina la necesidad de codificar información confidencial en texto sin formato.

También debe aprender a usar los roles de AWS IAM para aplicaciones que se ejecutan en Amazon EC2 . Además, para obtener los mejores resultados, aprenda a proporcionar de forma segura las credenciales de la base de datos a las funciones de AWS Lambda mediante AWS Secrets Manager .
Si bien esta información se adapta a los problemas que enfrentan los clientes de AWS, otros clientes o desarrolladores de proveedores de la nube con un entorno local también pueden aprovechar servicios equivalentes para lograr el mismo objetivo.
AWS Secrets Manager lo ayuda a administrar, recuperar y rotar las credenciales de la base de datos, las API keys y otros secretos a lo largo de sus ciclos de vida. Consulte la documentación de AWS Secrets Manager para obtener un escenario básico para usar AWS Secrets Manager, tutoriales y guías.

Conclusión

Si sigue las prácticas recomendadas descritas en este documento técnico, como la protección de capas, la rotación de claves de cifrado y el uso de repositorios de códigos privados en lugar de públicos, puede ayudar a garantizar que sus datos y aplicaciones estén seguros. No sacrifique la seguridad por la velocidad, ya que es beneficioso tener un ciclo de vida de desarrollo de software sólido que integre la seguridad como una prioridad principal para garantizar que un producto seguro se lance a tiempo.

Otras lecturas

Para obtener información adicional, consulte:

Avisos

Los sellers y desarrolladores de Amazon son responsables de realizar su propia evaluación independiente de la información de este documento. Este documento: (a) es solo para fines informativos, (b) representa las prácticas actuales, que están sujetas a cambios sin previo aviso, y (c) no crea ningún compromiso ni garantía por parte de Amazon.com Services LLC (Amazon) y sus afiliados. , proveedores o licenciantes. Los productos o servicios de la API de Amazon Services se proporcionan "tal cual" sin garantías, representaciones o condiciones de ningún tipo, ya sean expresas o implícitas. Este documento no forma parte ni modifica ningún acuerdo entre Amazon y ninguna de las partes.
© 2022 Amazon.com Services LLC o sus afiliados. Reservados todos los derechos.