En este documento, se describe cómo las implementaciones seguras de Spanner Omni controlan el acceso a través de la autenticación y la autorización. Creas y administras usuarios, y les asignas roles que definen sus permisos. Los usuarios pueden autenticarse con uno de los siguientes métodos:
- Autenticación con contraseña: Usa el protocolo de contraseña OPAQUE. Este protocolo mejora la seguridad, ya que proporciona tokens de acceso firmados para las solicitudes posteriores.
- Autenticación con certificado de cliente: Usa certificados firmados por la misma autoridad certificadora (CA) que firmó los certificados del servidor de API. El
Common Namedel certificado identifica al usuario.
La autorización en Spanner Omni usa nombres de roles y permisos de Identity and Access Management (IAM), de manera similar a Spanner. Asignas roles a los usuarios que otorgan permisos específicos. El IAM de Spanner Omni es diferente del IAM de Spanner. Por ejemplo, no admite roles personalizados y sí incluye permisos específicos de Spanner Omni.
Usuarios
En una implementación segura, se requiere un usuario para acceder a las APIs de Spanner Omni. Puedes crear, actualizar y borrar usuarios con la CLI de Spanner Omni. Cada implementación de Spanner Omni crea un solo usuario admin de forma predeterminada con la contraseña admin.
Crear usuarios
Crea usuarios nuevos para que puedas asignar diferentes roles y auditar el uso. El siguiente comando asigna al usuario nuevo el rol roles/spanner.databaseUser para que pueda leer y escribir en una base de datos de Spanner Omni.
spanner users create USER_NAME --roles=roles/spanner.databaseUser
Borrar usuarios
Borra los usuarios obsoletos del sistema:
spanner users delete USER_NAME
Actualiza usuarios
Actualiza el estado y los roles de un usuario. Este comando reemplaza el estado y los roles existentes:
spanner users update USER_NAME --roles=NEW_ROLES --state=ACTIVE
Autenticación
En una implementación segura, los usuarios deben acceder antes de ingresar a una implementación de Spanner Omni.
Spanner Omni proporciona dos mecanismos para autenticar a los usuarios:
| Mecanismos | Descripción |
|---|---|
| Contraseñas | Los usuarios ingresan su nombre de usuario y contraseña. |
| Certificados de clientes | Los clientes usan certificados firmados por la misma autoridad certificadora (CA) que firmó los certificados del servidor de API. |
Contraseñas
La autenticación con contraseña requiere que ingreses tu nombre de usuario y contraseña. Solo funciona cuando TLS está habilitado en el servidor.
spanner auth login USER_NAME
Spanner Omni usa una implementación del protocolo OPAQUE para evitar enviar contraseñas al servidor, lo que protege el sistema de ataques de intermediario. Spanner Omni no almacena contraseñas en el servidor, por lo que el acceso no deseado al servidor no compromete las credenciales del usuario.
Después de que te autentiques correctamente, Spanner Omni devolverá un token de acceso firmado. Adjunta el token de acceso a todas las solicitudes posteriores. La CLI de Spanner Omni almacena el token de acceso en ~/.config/spanner/access_token/token.txt. Para mantener la seguridad de tu sistema, no compartas este token con otras personas.
De forma predeterminada, el token de acceso tiene un tiempo de vencimiento de 60 minutos. Después de 60 minutos, el servidor no acepta el token de acceso y debes volver a acceder. Spanner Omni firma el token de acceso para evitar manipulaciones.
Para evitar que las contraseñas aparezcan en lugares donde podrías verlas, como variables de entorno o marcas de línea de comandos, los comandos de la CLI de Spanner Omni aceptan contraseñas de dos maneras:
- Instrucciones que ocultan tu entrada.
- Cadenas en archivos. Spanner Omni verifica que los permisos de archivo sean 600, sobrescribe los archivos con datos aleatorios y los borra después de leerlos.
Para obtener más detalles, ejecuta spanner auth --help.
Certificados de clientes
La autenticación con certificado de cliente requiere que los clientes usen certificados firmados por la misma autoridad certificadora (CA) que firmó los certificados del servidor de API.
Incluye el nombre de usuario de un usuario activo y válido en el campo Common Name del certificado.
Cuando realizas la autorización, los roles que asignas determinan si tienes permisos para realizar la operación solicitada. Para adjuntar un certificado de cliente a una solicitud, usa las marcas --ca-certificate-file y --client-certificate-directory. A continuación, se muestra un ejemplo de cómo enumerar bases de datos:
spanner databases list --ca-certificate-file PATH_TO_CA_CERT --client-certificate-directory PATH_TO_CLIENT_CERT_DIR
También puedes usar certificados de cliente para acceder:
spanner auth login USER_NAME --ca-certificate-file PATH_TO_CA_CERT --client-certificate-directory PATH_TO_CLIENT_CERT_DIR
Autorización
Spanner Omni usa la mayoría de los mismos nombres de roles y permisos de IAM que Spanner. Cuando creas un usuario, puedes asignarle uno o más roles. Cada rol contiene uno o más permisos.
Para enumerar los roles disponibles en Spanner Omni, usa el siguiente comando:
spanner roles list
Para obtener información sobre los permisos de IAM en Spanner Omni, consulta la descripción general de IAM.