Cómo configurar RBAC para logs
Los logs puede contener información sensible que podría ser limpiada o a la que sólo podrían acceder los usuarios autorizados de tu organización. También es posible que quieras segmentar a tus usuarios para que no interfieran unos con otros en lo que respecta a la configuración y al control presupuestario.
Esta guía proporciona una metodología para desarrollar roles personalizados en Datadog que permitan a los usuarios acceder a los logs y a las características de los logs, de conformidad con las normas.
Múltiples equipos
Supongamos que tu organización está formada por varios equipos. Uno de ellos es el equipo ACME (Applicative Component Making Errors), cuyos miembros se encargan de logs ACME para solucionar problemas y con fines de auditoría.
En esta guía también se supone que hay dos categorías de usuarios en el equipo ACME:
ACME Admin
: rol para los usuarios que están a cargo de la recopilación de logs, de los pipelines y de los filtros de exclusión de ACME.ACME User
: rol para que los usuarios accedan a logs de ACME y creen monitores o dashboards a partir de estos logs.
Nota: Puedes adaptar esta guía para un único rol de ACME (concentrando los permisos de los administradores de ACME y los usuarios de ACME) con fines de simplificación, o para más roles, con fines de asignación de permisos más específicos.
Aunque esta guía se centra en el equipo ACME, tu configuración puede replicarse a cualquier otro equipo de tu organización. Los miembros del equipo ACME también pueden ser miembros de otros equipos de tu organización. Los permisos son aditivos en Datadog, y los usuarios de múltiples equipos pueden beneficiarse de la unión de los permisos heredados de cada equipo al que pertenezcan.
Rol de administrador de Datadog
Esta guía explica cómo puedes configurar, como administrador de Datadog, una zona de acción segura para que los miembros del equipo ACME interactúen con sus logs (sin interferir con otros miembros del equipo de logs) y, al mismo tiempo, restringir el acceso a estos logs sólo a los usuarios de ACME.
Nota: Puedes adaptar esta guía para tener en cuenta que los administradores de ACME también son administradores de Datadog.
Esta guía explora los siguientes aspectos:
- Requisitos previos para administradores.
- Configurar roles para el equipo ACME y asignar miembros: Configurar roles.
- Limitar el acceso a logs en toda una aplicación Datadog con consultas de restricción: Restringir el acceso a logs.
- Configurar permisos por recursos de logs (a saber, pipelines, índices y archivos): Restringir el acceso a recursos de logs.
Requisitos previos
Etiquetar logs entrantes
Etiqueta los logs entrantes de ACME con una etiqueta team:acme
. Esto es útil para clasificar tus logs a medida que circulan a través de Datadog.
Por ejemplo, en el contexto de la recopilación de logs de Docker, adjunta la etiqueta team:acme
a los logs que provienen de ese contenedor utilizando etiquetas (labels) de Docker como etiquetas (tags). Para obtener información más general, consulta la sección de etiquetado.
Iniciar sesión como administrador de Datadog
Para ejecutar las acciones restantes de esta guía, tu cuenta de usuario requiere el rol de administrador de Datadog o uno similar. Necesitas los siguientes permisos:
Verifica en tu lista de usuarios que tienes todos estos permisos. Si te falta alguno, pide a un usuario administrador de Datadog que los configure.
Obtener una clave de API y una clave de aplicación
Nota: Esta sección sólo es necesaria si tienes intención de utilizar la API de Datadog, para lo cual necesitas una clave de API y una clave de aplicación de un usuario administrador.
Las claves de API y de aplicación están disponibles en la página de la clave de API de tu cuenta Datadog. Para obtener más información, consulta la sección Claves de API y de aplicación en la documentación.
Asegúrate de que la clave de aplicación que utilizas está asociada a tu propio usuario o a un usuario que tenga permisos similares.
A lo largo de esta guía, debes sustituir todas las apariciones de <Datadog_API_KEY>
y <Datadog_APP_KEY>
por tu clave de API de Datadog y tu clave de aplicación de Datadog, respectivamente. Esta guía también supone que tienes un terminal con CURL
.
Obtener los ID de permisos
Nota: Esta sección sólo es necesaria si tienes intención de utilizar la API Datadog para la configuración del control de acceso basado en roles (RBAC).
Utiliza la API de permisos para obtener la lista de todos los permisos existentes. La respuesta es una matriz de permisos como la siguiente (el permiso logs_read_data
tiene el <PERMISSION_ID>
1af86ce4-7823-11ea-93dc-d7cad1b1c6cb
, que es todo lo que necesitas saber sobre ese permiso).
curl -X GET "https://app.datadoghq.com/api/v2/permissions" -H "Content-Type: application/json" -H "DD-API-KEY: <DATADOG_API_KEY>" -H "DD-APPLICATION-KEY: <DATADOG_APP_KEY>"
[...]
{
"type": "permissions",
"id": "1af86ce4-7823-11ea-93dc-d7cad1b1c6cb",
"attributes": {
"name": "logs_read_data",
"display_name": "Logs Read Data",
[...]
}
}
[...]
Nota: Los ID de permisos cambian dependiendo del sitio Datadog (Datadog US, Datadog EU, etc.) que estés utilizando.
Configurar roles
Esta sección explica cómo crear dos roles, ACME Admin
y ACME User
, cómo otorgar a ambos roles permisos mínimos de logs (ampliados más adelante en esta guía) y cómo asignar a los usuarios cualquiera de los dos roles.
Crear un rol
En la sección de grupos de los parámetros de la organización Datadog, utiliza el botón Add Role (Añadir rol), en la pestaña Role (Rol), para crear los nuevos roles ACME Admin
y ACME User
.
Al crear un nuevo rol:
- Crear con acceso estándar.
- Concede permisos de lectura de datos de índice y de Live Tail. Estos son permisos heredados que puedes habilitar de forma segura.
Para obtener más información sobre la creación de roles, consulta la sección Gestión de cuentas.
Repite los pasos siguientes para los roles ACME Admin
y ACME User
:
- Si el rol aún no existe, créalo con la API de creación de roles. En el siguiente ejemplo,
dcf7c550-99cb-11ea-93e6-376cebac897c
es el ID del rol.
curl -X POST "https://app.datadoghq.com/api/v2/roles" -H "Content-Type: application/json" -H "DD-API-KEY: <DATADOG_API_KEY>" -H "DD-APPLICATION-KEY: <DATADOG_APP_KEY>" -d '{"data": {"type": "roles","attributes": {"name": "ACME Admin"}}}'
[...]
"type": "roles",
"id": "dcf7c550-99cb-11ea-93e6-376cebac897c",
"attributes": { "name": "ACME Admin", [...] }
[...]
- Alternativamente, si el rol ya existe, utiliza la API de lista de roles para obtener su ID de rol.
curl -X GET "https://app.datadoghq.com/api/v2/roles?page[size]=10&page[number]=0&sort=name&filter=ACME" -H "DD-API-KEY: <DATADOG_API_KEY>" -H "DD-APPLICATION-KEY: <DATADOG_APP_KEY>"'
[...]
"type": "roles",
"id": "dcf7c550-99cb-11ea-93e6-376cebac897c",
"attributes": { "name": "ACME Admin", [...] }
[...]
- Comprueba los permisos existentes para el rol (sólo debe tener los permisos Read Monitors [Leer Monitores] y Read Dashboards [Leer dashboards] para los roles recién creados).
curl -X GET "https://app.datadoghq.com/api/v2/roles/<ROLE_ID>/permissions" -H "DD-API-KEY: <DATADOG_API_KEY>" -H "DD-APPLICATION-KEY: <DATADOG_APP_KEY>"
- Asigna los permisos
standard
, logs_read_index_data
y logs_live_tail
al rol utilizando la API de concesión de permisos. Para obtener los ID correspondientes, consulta la sección Obtener los ID de permisos.
curl -X POST "https://app.datadoghq.com/api/v2/roles/<ROLE_ID>/permissions" -H "Content-Type: application/json" -H "DD-API-KEY: <DATADOG_API_KEY>" -H "DD-APPLICATION-KEY: <DATADOG_APP_KEY>" -d '{"data": {"type":"permissions","id": "<PERMISSION_ID>"}}'
- Si es necesario, revoca todos los demás permisos de logs con la API de revocación de permisos.
curl -X DELETE "https://app.datadoghq.com/api/v2/roles/<ROLE_ID>/permissions" -H "Content-Type: application/json" -H "DD-API-KEY: <DATADOG_API_KEY>" -H "DD-APPLICATION-KEY: <DATADOG_APP_KEY>" -d '{"data": {"type":"permissions","id": "<PERMISSION_ID>"}}'
Asociar un usuario a un rol
Ahora que tus roles están configurados con sus respectivos permisos, asigna estos roles a tus usuarios.
En la sección de equipos de Datadog, ve a la pestaña User (Usuario). Elige un usuario y asígnale el rol ACME Admin
o el rol ACME User
, además de los roles que ya tenga asignados. Para obtener más detalles sobre la gestión de usuarios, consulta la sección Gestión de cuentas.
Utilizando la API de usuarios de lista, obtén el ID del usuario que quieres asignar al rol ACME Admin
o al rol ACME User
. Como esta API está paginada, es posible que tengas que filtrar los resultados utilizando, por ejemplo, el apellido del usuario como parámetro de consulta. En el siguiente ejemplo, el ID de usuario es 1581e993-eba0-11e9-a77a-7b9b056a262c
.
curl -X GET "https://api.datadoghq.com/api/v2/users?page[size]=10&page[number]=0&sort=name&filter=smith" -H "Content-Type: application/json" -H "DD-API-KEY: <DATADOG_API_KEY>" -H "DD-APPLICATION-KEY: <DATADOG_APP_KEY>"
[...]
"type": "users",
"id": "1581e993-eba0-11e9-a77a-7b9b056a262c",
"attributes": {
"name": "John Smith",
"handle": "john.smith@company.com",
[...]
},
[...]
Asociar usuarios a roles de ACME
Para añadir cada usuario a un rol, utiliza la API de asignación de roles.
curl -X POST "https://api.datadoghq.com/api/v2/roles/<ROLE_ID>/users" -H "Content-Type: application/json" -H "DD-API-KEY: <DATADOG_API_KEY>" -H "DD-APPLICATION-KEY: <DATADOG_APP_KEY>" -d '{"data": {"type":"users","id":"<USER_ID>"}}'
Eliminar usuarios de los roles predeterminados
Comprueba si el usuario ya tiene roles y los ID correspondientes. Es posible que quieras eliminar los roles predeterminados de Datadog de estos usuarios, ya que podrían conceder permisos adicionales al usuario que no quieres que concedan
curl -X DELETE "https://api.datadoghq.com/api/v2/roles/<ROLE_ID>/users" -H "Content-Type: application/json" -H "DD-API-KEY: <DATADOG_API_KEY>" -H "DD-APPLICATION-KEY: <DATADOG_APP_KEY>" -d '{"data": {"type":"users","id":"<USER_ID>"}}'
Restringir el acceso a logs
En esta sección se explica cómo conceder a los miembros del equipo ACME (tanto a los miembros de ACME Admin
como a los de ACME User
) acceso sólo a logs de team:acme
. Utiliza el permiso lectura de datos de logs, acotado mediante consultas de restricción.
Como buena práctica para obtener la máxima especificidad y facilitar el mantenimiento, no debes ampliar los permisos de los usuarios ACME para acceder a más logs. No restrinjas otros roles a la misma consulta de restricción team:acme
. En su lugar, considera la posibilidad de asignar usuarios a varios roles, en función de aquello a lo que cada uno de ellos necesite acceder individualmente.
En esta sección se explica cómo:
- Crear una consulta de restricción
team:acme
. - Adjuntar esa consulta de restricción a los roles de ACME.
**Nota: Los roles no pueden tener más de una consulta de restricción adjunta. Si adjuntas una consulta de restricción a un rol, se eliminan todas las consultas de restricción ya adjuntas a este rol.
Utiliza la API de creación de consultas de restricción para crear una nueva consulta de restricción. Anota el ID de la consulta de restricción (76b2c0e6-98fa-11ea-93e6-775bd9258d59
, en el siguiente ejemplo).
curl -X POST "https://app.datadoghq.com/api/v2/logs/config/restriction_queries" -H "Content-Type: application/json" -H "DD-API-KEY: <DATADOG_API_KEY>" -H "DD-APPLICATION-KEY: <DATADOG_APP_KEY>" -d '{"data": {"type": "logs_restriction_queries","attributes": {"restriction_query": "team:acme"}}}'
{
"data": {
"type": "logs_restriction_queries",
"id": "76b2c0e6-98fa-11ea-93e6-775bd9258d59",
"attributes": {
"restriction_query": "team:acme",
"created_at": "2020-05-18T11:26:48.887750+00:00",
"modified_at": "2020-05-18T11:26:48.887750+00:00"
}
}
}
A continuación, adjunta la consulta de restricción anterior a los roles ACME con la API de consulta de restricción. Repite esta operación con los ID de los roles ACME Admin
y ACME User
.
curl -X POST "https://app.datadoghq.com/api/v2/logs/config/restriction_queries/<RESTRICTION_QUERY_ID>/roles" -H "Content-Type: application/json" -H "DD-API-KEY: <DATADOG_API_KEY>" -H "DD-APPLICATION-KEY: <DATADOG_APP_KEY>" -d '{"data": {"type": "roles","id": "<ROLE_ID>"}}'
Por último, habilita los permisos de logs_read_data
en el rol mediante la API de concesión de permisos. Para obtener el ID correspondiente a este permiso, consulta la sección Obtener ID de permisos.
curl -X POST "https://app.datadoghq.com/api/v2/roles/<ROLE_ID>/permissions" -H "Content-Type: application/json" -H "DD-API-KEY: <DATADOG_API_KEY>" -H "DD-APPLICATION-KEY: <DATADOG_APP_KEY>" -d '{"data": {"type":"permissions","id": "<PERMISSION_ID>"}}'
También puedes confirmar que la configuración se ha realizado correctamente:
Restringir el acceso a recursos de logs
En esta sección se detalla cómo conceder a los miembros del rol ACME Admin
permiso para interactuar con recursos de logs de ACME (a saber, pipelines de logs, índices de logs y archivos de logs).
Esto garantiza que:
- Los miembros
ACME Admin
(y sólo los miembros de ACME Admin
) puedan interactuar con recursos de logs de ACME. - Ni los miembros
ACME Admin
, ni los miembros ACME User
puedan interferir con recursos de otros equipos. - Ni los miembros
ACME Admin
, ni los miembros ACME User
puedan interferir con configuraciones de “Administrador” de nivel superior, como qué logs se transfieren hacia sus recursos, las limitaciones presupuestarias o las reglas de restricción de acceso a logs.
Como buena práctica para obtener la máxima especificidad y facilitar el mantenimiento, no deberías conceder a otros roles el permiso para editar recursos de logs de ACME. En su lugar, considera la posibilidad de añadir (algunos) usuarios de esos otros roles al rol ACME Admin
.
Pipelines de logs
Crea un pipeline para team:acme
logs. Asigna el permiso Procesador de escritura a los miembros ACME Admin
, pero acota ese permiso a este pipeline “raíz” de ACME.
Índices de logs
Crea uno o varios índices para logs team:acme
. Los índices múltiples pueden ser valiosos si el equipo ACME necesita un control presupuestario detallado (por ejemplo, índices con diferentes retenciones o índices con diferentes cuotas). Asigna el permiso Filtros de exclusión de escritura a los miembros ACME Admin
, pero acota ese permiso a estos índices ACME.
Archivos de logs
Leer los archivos
Crea uno o varios archivos para logs team:acme
. Asigna el permiso Leer archivos a los miembros ACME Admin
, pero específicamente para ese(esos) archivo(s) de ACME.
Los archivos múltiples pueden ser útiles si tienes diferentes políticas de ciclo de vida dependiendo de los logs (por ejemplo, para logs de producción y de staging). Ten en cuenta que la recuperación está pensada para funcionar en un solo archivo a la vez, aunque puede activar varias recuperaciones en varios archivos a la vez.
Escribir vistas históricas
Asigna el permiso Escribir vista histórica a los miembros ACME Admin
. Este permiso otorga la capacidad de realizar recuperaciones.
Opcionalmente, configura tus archivos de logs de forma que todos los logs recuperados desde ese archivo tengan finalmente la etiqueta team:acme
, tanto si la tenían en el archivo, como si no. Esta opción te permite reforzar la coherencia con tus políticas de restricción existentes, así como eliminar de forma segura las restricciones obsoletas que corresponden a que no haya más logs circulando en Datadog o indexados en Datadog.
Nota: Si utilizas el permiso lectura de datos de índices heredados, añade el rol ACME User
al archivo o archivos de ACME junto con el rol ACME Admin
. Como los miembros del rol ACME User
no tienen permiso para realizar la recuperación, esto no les otorga permisos sensibles. Sin embargo, esto acota automáticamente el permiso de lectura de datos de índices a la vista histórica resultante, para que puedan acceder al contenido.
Leer más
Más enlaces, artículos y documentación útiles: