SEC03-BP09 Compartir recursos de forma segura con terceros
La seguridad de su entorno en la nube no se limita a su organización. Su organización puede recurrir a terceros para administrar una parte de sus datos. La administración de permisos para el sistema administrado por terceros debe seguir la práctica del acceso justo a tiempo utilizando el principio del privilegio mínimo con credenciales temporales. Si colabora estrechamente con un tercero, podrán reducir juntos el alcance del impacto y el riesgo de un acceso no intencionado.
Resultado deseado: cualquiera puede utilizar las credenciales de larga duración de AWS Identity and Access Management (IAM), las claves de acceso de IAM y las claves secretas que están asociadas a un usuario siempre que las credenciales sean válidas y estén activas. El uso de un rol de IAM y credenciales temporales le ayuda a mejorar su postura de seguridad general al reducir el esfuerzo que supone mantener credenciales de larga duración, incluida la sobrecarga de administración y operativa que entrañan esos datos confidenciales. Al utilizar un identificador único universal (UUID) para el ID externo en la política de confianza de IAM y mantener bajo su control las políticas de IAM asociadas al rol de IAM, puede auditar y verificar que el acceso concedido a un tercero no sea demasiado permisivo. Para obtener orientación prescriptiva sobre el análisis de recursos que se comparten externamente, consulte SEC03-BP07 Analizar el acceso público y entre cuentas.
Antipatrones usuales:
-
Utilizar la política de confianza de IAM predeterminada sin ninguna condición.
-
Utilizar credenciales y claves de acceso de IAM de larga duración.
-
Reutilizar ID externos.
Nivel de riesgo expuesto si no se establece esta práctica recomendada: medio
Guía para la implementación
Es posible que desee permitir que se compartan recursos fuera de AWS Organizations o conceder a un tercero acceso a su cuenta. Por ejemplo, es posible que un tercero le proporcione una solución de supervisión que necesite acceder a los recursos de su cuenta. En esos casos, cree un rol entre cuentas de IAM con solo los privilegios que necesite el tercero. Además, defina una política de confianza utilizando la condición de ID externo. Cuando utilice un ID externo, usted o el tercero pueden generar un ID único para cada cliente, tercero o tenencia. El ID único no debe controlarlo nadie más que usted después de crearlo. El tercero debe implementar un proceso para relacionar el ID externo con el cliente de una forma segura, auditable y reproducible.
También puede utilizar Funciones de IAM en cualquier lugar para administrar roles de IAM para aplicaciones fuera de AWS que utilicen API de AWS.
Si el tercero ya no necesita acceder a su entorno, elimine el rol. Procure no proporcionar credenciales de larga duración a terceros. Manténgase al tanto de otros servicios de AWS que admiten el uso compartido. Por ejemplo, AWS Well-Architected Tool permite compartir una carga de trabajo con otras Cuentas de AWS y AWS Resource Access Manager le ayuda a compartir de forma segura un recurso de AWS de su propiedad con otras cuentas.
Pasos para la implementación
-
Utilice roles entre cuentas para proporcionar acceso a cuentas externas.
Los roles entre cuentas reducen la cantidad de información confidencial que almacenan las cuentas externas y terceros para dar servicio a sus clientes. Los roles entre cuentas le permiten conceder acceso a los recursos de AWS de su cuenta de forma segura a un tercero, como AWS Partner u otras cuentas de su organización, al tiempo que puede mantener la capacidad de administrar y auditar dicho acceso.
El tercero podría estar proporcionándole un servicio desde una infraestructura híbrida o extrayendo datos a una ubicación externa. Funciones de IAM en cualquier lugar le ayuda a permitir que las cargas de trabajo de terceros interactúen de forma segura con sus cargas de trabajo de AWS y a reducir aún más la necesidad de utilizar credenciales de larga duración.
No debería utilizar credenciales de larga duración ni claves de acceso asociadas a usuarios para proporcionar acceso a cuentas externas. En su lugar, utilice roles entre cuentas para proporcionar el acceso entre cuentas.
-
Utilice un ID externo con terceros.
El uso de un ID externo le permite designar quién puede asumir un rol en una política de confianza de IAM. La política de confianza puede exigir que el usuario que asume el rol reafirme la condición y el objetivo en el que opera. También proporciona un mecanismo para que el propietario de la cuenta permita que el rol se adopte únicamente en circunstancias específicas. La función principal del ID externo es abordar y prevenir el problema del suplente confundido.
Utilice un ID externo si es propietario de una Cuenta de AWS y ha configurado un rol para un tercero que accede a otras Cuentas de AWS además de la suya, o cuando tenga que asumir roles en nombre de diferentes clientes. Trabaje con su tercero o AWS Partner para establecer una condición de ID externo que desee incluir en la política de confianza de IAM.
-
Utilice ID externos universalmente únicos.
Implemente un proceso que genere un valor único aleatorio para un ID externo, como un identificador universalmente único (UUID). El hecho de que un tercero reutilice los ID externos para distintos clientes no resuelve el problema del suplente confundido, ya que el cliente A podría ver los datos del cliente B utilizando el ARN de rol del cliente B junto con el ID externo duplicado. En un entorno de varios inquilinos, en el que un tercero da soporte a varios clientes con diferentes Cuentas de AWS, el tercero debe utilizar un ID único diferente como ID externo para cada Cuenta de AWS. El tercero es responsable de detectar los ID externos duplicados y de asignar de forma segura cada cliente a su ID externo correspondiente. El tercero debe realizar pruebas para verificar que solo puede asumir el rol cuando se especifica el ID externo. El tercero debería abstenerse de almacenar el ARN del rol del cliente y el ID externo hasta que se requiera el ID externo.
El ID externo no se trata como un secreto, pero no debe ser un valor fácil de adivinar, como un número de teléfono, un nombre o un ID de cuenta. Convierta el ID externo en un campo de solo lectura para que no pueda modificarse con el fin de suplantar la configuración.
El ID externo puede generarlo usted o el tercero. Defina un proceso para determinar quién es el responsable de generar el ID. Independientemente de la entidad que cree el ID externo, el tercero aplica la unicidad y los formatos de manera uniforme en todos los clientes.
-
Declare obsoletas las credenciales de larga duración proporcionadas por el cliente.
Declare obsoleto el uso de credenciales de larga duración y utilice roles de cuentas cruzadas o Funciones de IAM en cualquier lugar. Si debe utilizar credenciales de larga duración, establezca un plan para migrar al acceso basado en roles. Para obtener información sobre la administración de claves, consulte Administración de identidades. Trabaje también con el equipo de su Cuenta de AWS y el tercero para establecer un runbook de mitigación de riesgos. Para obtener orientación prescriptiva sobre cómo responder y mitigar el impacto potencial de un incidente de seguridad, consulte Respuesta a incidentes.
-
Verifique que la configuración tenga una orientación prescriptiva o esté automatizada.
La política que se cree para el acceso entre cuentas en sus cuentas debe seguir el principio del privilegio mínimo. El tercero debe proporcionarle un documento de políticas de roles o un mecanismo de configuración automatizado que utilice una plantilla de AWS CloudFormation o algo equivalente. Esto reduce la posibilidad de que se produzcan errores asociados a la creación manual de políticas y ofrece un registro de seguimiento auditable Para obtener más información sobre el uso de una plantilla de AWS CloudFormation para crear roles entre cuentas, consulte Cross-Account Roles
(Roles entre cuentas). El tercero debe proporcionar un mecanismo de configuración automatizado y auditable. Sin embargo, debería automatizar la configuración del rol con el documento de la política de roles que describe el acceso necesario. Con una plantilla de AWS CloudFormation o algo equivalente, debería supervisar los cambios y utilizar la detección de desviaciones como parte de la práctica de auditoría.
-
Tenga en cuenta los cambios.
La estructura de su cuenta, su necesidad de utilizar al tercero o la oferta de servicios que este le proporciona pueden cambiar. Debe anticiparse a los cambios y a los fallos y planificar en consecuencia las personas, los procesos y la tecnología adecuados. Audite de forma periódica el nivel de acceso que proporciona e implemente métodos de detección que le alerten de cambios inesperados. Supervise y audite el uso del rol y el almacén de datos de los ID externos. Debe estar preparado para revocar el acceso del tercero, de forma temporal o permanente, a causa de cambios o patrones de acceso inesperados. Asimismo, mida el impacto en su operación de revocación, incluido el tiempo que lleva realizarla, las personas implicadas, el coste y el impacto en otros recursos.
Para obtener una orientación prescriptiva sobre los métodos de detección, consulte las prácticas recomendadas en Detección.
Recursos
Prácticas recomendadas relacionadas:
Documentos relacionados:
-
How to use Trust Policies with IAM
roles (Cómo utilizar las políticas de confianza con roles de IAM) -
Delegación del acceso entre Cuentas de AWS mediante roles de IAM
-
How do I access resources in another Cuenta de AWS using AWS IAM?
(¿Cómo accedo a los recursos en otra cuenta de AWS a través de AWS IAM?) -
Cómo utilizar un ID externo al otorgar acceso a los recursos de AWS a terceros
-
Collecting Information from AWS CloudFormation Resources Created in External Accounts with Custom Resources
(Recopilación de información de recursos de AWS CloudFormation creados en cuentas externas con recursos personalizados) -
Securely Using External ID for Accessing AWS Accounts Owned by Others
(Uso seguro del ID externo para acceder a cuentas de AWS propiedad de terceros) -
Extend IAM roles to workloads outside of IAM with IAM Roles Anywhere
(Extienda los roles de IAM de AWS a cargas de trabajo fuera de AWS con Funciones de IAM en cualquier lugar)
Vídeos relacionados:
-
How do I allow users or roles in a separate Cuenta de AWS access to my Cuenta de AWS?
(¿Cómo permito que los usuarios o roles de una cuenta de AWS independiente accedan a mi cuenta de AWS? -
AWS re:Invent 2018: Become an IAM Policy Master in 60 Minutes or Less
(AWS re:Invent 2018: Consiga dominar las políticas de IAM en 60 minutos o menos) -
AWS Knowledge Center Live: IAM Best Practices and Design Decisions
(Centro de conocimiento de AWS en directo: Prácticas recomendadas y decisiones de diseño de IAM)
Ejemplos relacionados:
-
Well-Architected Lab - Lambda cross account IAM role assumption (Level 300)
(Laboratorio de Well-Architected: Asunción de roles de IAM entre cuentas de Lambda [Nivel 300]) -
Configure cross-account access to Amazon DynamoDB (Configurar el acceso entre cuentas a Amazon DynamoDB)
-
AWS STS Network Query Tool
(Herramienta de consulta de red AWS STS)