Cómo configurar RBAC para logs

Información general

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:

  1. Requisitos previos para administradores.
  2. Configurar roles para el equipo ACME y asignar miembros: Configurar roles.
  3. Limitar el acceso a logs en toda una aplicación Datadog con consultas de restricción: Restringir el acceso a logs.
  4. 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.

Aplica una etiqueta de equipo a tus logs

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.

Comprueba las claves de API y de aplicación

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.

Añade un nuevo rol

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:

  1. 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", [...] }
[...]
  1. 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", [...] }
[...]
  1. 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>"
  1. 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>"}}'
  1. 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.

Delete invite on the grid view
Delete invite on the grid view

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:

  1. Crear una consulta de restricción team:acme.
  2. 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 página de acceso a datos de la aplicación Datadog para:

  • Crear una consulta de restricción team:acme.

  • Asignar los roles ACME Admin y ACME User a esa consulta de restricción.

    Restringe el acceso a logs

Para obtener más información, consulta la sección de permisos logs_read_data.

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.

Pipeline 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.

Í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.

Archivos 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.

Etiquetas (tags) ACME en recuperación

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.

Permiso de índices de recuperación

Leer más