Una forma de proteger los recursos sensibles es limitar el acceso a ellos. Sin embargo, limitar el acceso a recursos sensibles también genera fricciones para cualquier persona que ocasionalmente necesite acceder a esos recursos. Por ejemplo, un usuario puede necesitar acceso de emergencia a recursos sensibles para resolver un incidente.
En estas situaciones, recomendamos otorgarle al usuario permiso para acceder al recurso de forma temporal. También, para mejorar la auditoría, registra la justificación del usuario para acceder al recurso.
En Google Cloud, existen varias formas de administrar este tipo de acceso temporal con permisos elevados.
Privileged Access Manager
Puedes usar Privileged Access Manager (PAM) para administrar la elevación de privilegios temporales justo a tiempo para principales seleccionados y, luego, ver los registros de auditoría para averiguar quién tuvo acceso a qué y cuándo.
Te recomendamos que proporciones una elevación de privilegios temporal a través de Privileged Access Manager en las siguientes situaciones:
Otorgar acceso de emergencia: Permite que determinados servicios de emergencia realicen tareas críticas sin tener que esperar la aprobación. Puedes exigir justificaciones para obtener contexto adicional sobre por qué se necesita el acceso de emergencia.
Controla el acceso a recursos sensibles: Controla de forma estricta el acceso a recursos sensibles, lo que requiere aprobaciones y justificaciones comerciales. Privileged Access Manager también se puede usar para auditar cómo se usó este acceso, por ejemplo, cuándo estaban activos los roles otorgados para un usuario, a qué recursos se podía acceder durante ese tiempo, la justificación del acceso y quién lo aprobó.
Por ejemplo, puedes usar Privileged Access Manager para hacer lo siguiente:
Otorgar a los desarrolladores acceso temporal a los entornos de producción para la solución de problemas o las implementaciones
Otorgar a los ingenieros de asistencia acceso a datos sensibles de los clientes para tareas específicas
Otorgar privilegios elevados a los administradores de bases de datos para el mantenimiento o los cambios de configuración
Ayuda a proteger las cuentas de servicio: En lugar de otorgar roles de forma permanente a las cuentas de servicio, permite que estas se eleven y asuman roles solo cuando sea necesario para las tareas automatizadas.
Administra el acceso de los contratistas y el personal externo: Otorgar a los contratistas o miembros del personal externo acceso temporal y limitado a los recursos, con las aprobaciones y justificaciones necesarias
Para obtener más información sobre cómo configurar Privileged Access Manager, consulta la descripción general de Privileged Access Manager.
Para obtener más información sobre cómo solicitar una elevación temporal, consulta Solicita acceso elevado temporal.
Grupos de Google
Una forma de administrar el acceso temporal con permisos elevados es otorgarle a un grupo de Google acceso a recursos sensibles y, luego, agregar y quitar usuarios de ese grupo para controlar su acceso.
Para configurar un Grupo de Google para el acceso temporal con permisos elevados, primero crea un grupo y, luego, bríndale los roles que deseas otorgar de forma temporal a los usuarios. Si usas políticas de denegación, también puedes hacer que el grupo esté exento de cualquier regla de denegación relevante para evitar denegaciones inesperadas.
Después de configurar el grupo, puedes agregar y quitar usuarios para modificar su acceso. Si usas la APIs de Grupos de Google, puedes agregar usuarios a un grupo de forma temporal mediante el vencimiento de la membresía.
Si quieres registrar las justificaciones del usuario para acceder a recursos sensibles, debes definir tus propios procesos y herramientas operativos.
Por ejemplo, para administrar el acceso de emergencia a los recursos de Compute Engine, puedes crear un grupo, emergency-compute-access@example.com
, y otorgarle el rol de administrador de Compute (roles/compute.admin
). Si un usuario necesita acceso de administrador de emergencia a los recursos de procesamiento, puedes agregarlos al grupo emergency-compute-access@example.com
. Después de que se resuelva la emergencia,
puedes quitarlos del grupo.
Condiciones de IAM
Puedes usar las Condiciones de IAM para otorgar a los usuarios acceso con vencimiento a los recursos de Google Cloud. Para obtener más información, consulta Configura el acceso temporal.
Si quieres registrar las justificaciones del usuario para acceder a recursos sensibles, debes definir tus propios procesos y herramientas operativos.
Las vinculaciones de roles vencidas no se quitan automáticamente de tus políticas de permisos. Para asegurarte de que tus políticas de permisos no excedan el tamaño máximo de las políticas de permisos, te recomendamos que quites periódicamente las vinculaciones de roles vencidas.
Las políticas de denegación no admiten condiciones basadas en el tiempo. Como resultado, no puedes usar condiciones en las políticas de denegación para eximir temporalmente a un usuario de una regla de denegación.
Acceso con privilegios justo a tiempo
Just-In-Time Access es una aplicación de código abierto que usa condiciones de IAM para otorgar a los usuarios acceso privilegiado justo a tiempo a los recursos de Google Cloud. Esta aplicación está diseñada para ejecutarse en App Engine o Cloud Run.
Esta aplicación tiene los siguientes beneficios en comparación con la adición manual de vinculaciones de roles condicionales:
- Los usuarios pueden buscar roles que puedan activar con Just-In-Time Access.
- Los usuarios deben proporcionar justificaciones antes de obtener acceso.
- La aplicación reemplaza la vinculación condicional existente en lugar de crear vinculaciones nuevas, lo que ayuda a mantener el tamaño de tu política de permisos de IAM.
Para obtener más información sobre Just-In-Time Access, consulta Administra el acceso con privilegios justo a tiempo a los proyectos.
Identidad temporal como cuenta de servicio
Cuando un principal autenticado, como un usuario o cualquier otra cuenta de servicio, se autentica como una cuenta de servicio para obtener los permisos de la cuenta de servicio, se llama actuar en nombre de la cuenta de servicio. Actuar en nombre de una cuenta de servicio permite que una principal autenticada acceda a lo que puede acceder la cuenta de servicio. Solo las principales autenticadas con los permisos adecuados pueden imitar cuentas de servicio.
Para configurar una cuenta de servicio para el acceso temporal elevado, crea la cuenta de servicio y, luego, bríndale los roles que deseas otorgar de forma temporal a un usuario. Si usas políticas de denegación, también puedes agregar la cuenta de servicio exenta de cualquier regla de denegación relevante para evitar denegaciones inesperadas.
Después de configurar la cuenta de servicio, puedes otorgarles a los usuarios acceso temporal y elevado permitiéndoles actuar en nombre de la cuenta de servicio. Existen varias formas de permitir que los usuarios usen las identidades de cuentas de servicio:
Otorga a los usuarios un rol que les permita crear credenciales de corta duración para la cuenta de servicio. Luego, los usuarios pueden usar las credenciales de corta duración para usar la identidad de la cuenta de servicio.
Otorga el rol de creador de tokens de identidad de OpenID Connect para cuentas de servicio (
roles/iam.serviceAccountOpenIdTokenCreator
) para permitir que el usuario cree tokens de ID de OpenID Connect de corta duración (OIDC) para la cuenta de servicio.Otorga el rol de creador de tokens de cuenta de servicio (
roles/iam.serviceAccountTokenCreator
) para permitir que el usuario cree los siguientes tipos de credenciales de cuenta de servicio:- Tokens de acceso de OAuth 2.0, que puedes usar para autenticar con las APIs de Google.
- Tokens de ID de OIDC
- Tokens web JSON (JWT) firmados y BLOB binarios
Si le otorgas a un usuario una de estos roles, esta puede actuar en nombre de la cuenta de servicio en cualquier momento para elevar su propio acceso. Sin embargo, es menos probable que accedan a recursos sensibles o los modifiquen de forma no intencional.
Para obtener información sobre cómo actuar en nombre de cuentas de servicio, consulta Usa identidad temporal como cuenta de servicio.
Crea un servicio de agente de tokens que les proporcione a los usuarios credenciales de corta duración para la cuenta de servicio después de que se autentiquen y proporcionen una justificación. Luego, los usuarios pueden usar las credenciales de corta duración para usar la identidad de la cuenta de servicio.
Con este método, puedes decidir cuándo permitir que los usuarios imiten la cuenta de servicio.
Para obtener información sobre cómo generar credenciales de corta duración, consulta Crea credenciales de corta duración para una cuenta de servicio.
Para obtener más información sobre la identidad temporal como cuenta de servicio, consulta Identidad temporal como cuenta de servicio.
¿Qué sigue?
- Configura Privileged Access Manager para obtener acceso elevado temporal.
- Usa las Condiciones de IAM para otorgar acceso temporal a un principal.
- Implementa la aplicación de Just-In-Time Access.
- Crea credenciales de corta duración de forma manual para usar la identidad de una cuenta de servicio.