Configuration du RBAC pour les logs
Présentation
Les logs peuvent contenir des informations sensibles qui peuvent être nettoyées ou dont l’accès peut être restreint à certains utilisateurs autorisés de votre organisation. Il peut également être préférable de segmenter vos utilisateurs afin qu’ils n’interfèrent pas entre eux durant les processus de configuration et de contrôle du budget.
Ce guide fournit une méthodologie pour le développement de rôles Datadog personnalisés qui permettent aux utilisateurs d’accéder aux logs et aux fonctionnalités associées de manière conforme.
Plusieurs équipes
Supposons que votre organisation se compose de plusieurs équipes. L’une d’entre elles est l’équipe ACME (Applicative Component Making Errors), dont les membres traitent les logs ACME à des fins de dépannage et d’audit.
Ce guide suppose également que l’équipe ACME comprend deux catégories d’utilisateurs :
ACME Admin
: un rôle pour les utilisateurs chargés de la collecte des logs ACME, des pipelines et des filtres d’exclusion.ACME User
: un rôle permettant aux utilisateurs d’accéder aux logs ACME, ainsi que de créer des monitors ou des dashboards à partir de ces logs.
Remarque : vous pouvez adapter ce guide de façon à n’utiliser qu’un seul rôle ACME (en consolidant les autorisations des administrateurs ACME et des utilisateurs ACME) par souci de simplicité, ou de façon à utiliser un plus grand nombre de rôles pour des autorisations plus granulaires.
Bien que ce guide se concentre sur l’équipe ACME, cette configuration peut être appliquée à toutes les autres équipes de votre organisation. Les membres de l’équipe ACME peuvent également faire partie d’autres équipes au sein de votre organisation. Les autorisations sont cumulatives dans Datadog, et les utilisateurs qui font partie de plusieurs équipes bénéficient de l’ensemble des autorisations octroyées par chacune des équipes dont ils sont membres.
Le rôle d’administrateur Datadog
Ce guide vous explique comment vous pouvez, en tant qu’administrateur Datadog, mettre en place un environnement sécurisé pour que les membres de l’équipe ACME puissent interagir avec leurs logs (sans interférer avec les logs des autres équipes) tout en limitant l’accès à ces logs aux utilisateurs ACME.
Remarque : vous pouvez adapter le présent guide afin que les administrateurs ACME soient également des administrateurs Datadog.
Ce guide aborde les étapes suivantes :
- Prérequis pour les administrateurs.
- Configuration des rôles de l’équipe ACME et affectation des membres : Configurer des rôles.
- Limitation de l’accès aux logs dans toute l’application Datadog avec des requêtes de restriction : Restreindre l’accès aux logs.
- Configuration des autorisations relatives aux ressources de log (à savoir les pipelines, les index et les archives) : Restreindre l’accès aux ressources de log.
Prérequis
Appliquer un tag aux logs entrants
Appliquez un tag team:acme
à vos logs entrants ACME afin de pouvoir trier vos logs dans Datadog.
Par exemple, dans le cadre de la collecte de logs Docker, associez le tag team:acme
aux logs issus de ce conteneur en utilisant les étiquettes Docker comme tags. Reportez-vous à la section sur le tagging pour une présentation plus générale.
Se connecter en tant qu’administrateur Datadog
Pour continuer à suivre les instructions de ce guide, le rôle Admin Datadog ou un rôle similaire doit être attribué à votre compte utilisateur. Vous avez besoin des autorisations suivantes :
Vérifiez dans la liste des utilisateurs que vous disposez de toutes ces autorisations. Si ce n’est pas le cas, demandez à un administrateur Datadog de les configurer pour vous.
Obtenir une clé d’API et une clé d’application
Remarque : cette section n’est nécessaire que si vous avez l’intention d’utiliser l’API Datadog, ce qui nécessite l’obtention d’une clé d’API et d’une clé d’application auprès d’un administrateur.
Les clés d’API et les clés d’application sont disponibles sur la page des clés d’API de votre compte Datadog. Pour en savoir plus, consultez la section Clés d’API et d’application de la documentation.
Assurez-vous que la clé d’application que vous utilisez est associée à votre compte utilisateur ou à un compte utilisateur qui dispose d’autorisations similaires.
Tout au long de ce guide, vous devrez remplacer chaque occurrence de <CLÉ_API_DATADOG>
et <CLÉ_APPLICATION_DATADOG>
par vos clés d’API et d’application Datadog, respectivement. Ce guide suppose également que vous avez accès à un terminal avec CURL
.
Récupérer les ID des autorisations
Remarque : cette section n’est nécessaire que si vous avez l’intention d’utiliser l’API Datadog pour configurer le RBAC.
Utilisez l’API Permissions pour obtenir la liste de toutes les autorisations existantes. Vous obtiendrez un tableau d’autorisations tel que celui ci-dessous (l’autorisation logs_read_data
est associée à l’<ID_AUTORISATION>
1af86ce4-7823-11ea-93dc-d7cad1b1c6cb
; c’est tout ce que vous devez savoir sur cette autorisation).
curl -X GET "https://app.datadoghq.com/api/v2/permissions" -H "Content-Type: application/json" -H "DD-API-KEY: <CLÉ_API_DATADOG>" -H "DD-APPLICATION-KEY: <CLÉ_APPLICATION_DATADOG>"
[...]
{
"type": "permissions",
"id": "1af86ce4-7823-11ea-93dc-d7cad1b1c6cb",
"attributes": {
"name": "logs_read_data",
"display_name": "Logs Read Data",
[...]
}
}
[...]
Remarque : les ID des autorisations changent en fonction du site Datadog (américain, européen, etc.) que vous utilisez.
Cette section explique comment créer deux rôles, ACME Admin
et ACME User
, comment accorder à ces deux rôles des autorisations minimales pour les logs (ainsi que des autorisations étendues plus loin dans ce guide), et comment attribuer l’un des deux rôles à des utilisateurs.
Créer un rôle
Depuis la section Groups de la page Organization Settings de Datadog, utilisez le bouton Add Role dans l’onglet Role pour créer les rôles ACME Admin
et ACME User
.
Lors de la création d’un rôle :
- Créez le rôle avec un accès standard.
- Accordez les autorisations Read Index Data et Live Tail. Il s’agit d’autorisations obsolètes que vous pouvez activer en toute sécurité.
Vous trouverez de plus amples informations sur la création de rôles dans la section Gestion de compte.
Répétez les étapes suivantes pour les rôles ACME Admin
et ACME User
:
- Si le rôle n’existe pas encore, créez le rôle avec l’API Role Creation. Dans l’exemple suivant,
dcf7c550-99cb-11ea-93e6-376cebac897c
est l’ID du rôle.
curl -X POST "https://app.datadoghq.com/api/v2/roles" -H "Content-Type: application/json" -H "DD-API-KEY: <CLÉ_API_DATADOG>" -H "DD-APPLICATION-KEY: <CLÉ_APPLICATION_DATADOG>" -d '{"data": {"type": "roles","attributes": {"name": "ACME Admin"}}}'
[...]
"type": "roles",
"id": "dcf7c550-99cb-11ea-93e6-376cebac897c",
"attributes": { "name": "ACME Admin", [...] }
[...]
- Sinon, si le rôle existe déjà, utilisez l’API Role List pour obtenir son ID.
curl -X GET "https://app.datadoghq.com/api/v2/roles?page[size]=10&page[number]=0&sort=name&filter=ACME" -H "DD-API-KEY: <CLÉ_API_DATADOG>" -H "DD-APPLICATION-KEY: <CLÉ_APPLICATION_DATADOG>"'
[...]
"type": "roles",
"id": "dcf7c550-99cb-11ea-93e6-376cebac897c",
"attributes": { "name": "ACME Admin", [...] }
[...]
- Vérifiez les autorisations existantes pour le rôle (les rôles qui viennent d’être créés doivent uniquement avoir un accès en lecture aux monitors et aux dashboards).
curl -X GET "https://app.datadoghq.com/api/v2/roles/<ID_RÔLE>/permissions" -H "DD-API-KEY: <CLÉ_API_DATADOG>" -H "DD-APPLICATION-KEY: <CLÉ_APPLICATION_DATADOG>"
- Attribuez les autorisations
standard
, logs_read_index_data
et logs_live_tail
au rôle à l’aide de l’API Grant Permissions. Reportez-vous à la section Récupérer les ID des autorisations pour obtenir les ID correspondants.
curl -X POST "https://app.datadoghq.com/api/v2/roles/<ID_RÔLE>/permissions" -H "Content-Type: application/json" -H "DD-API-KEY: <CLÉ_API_DATADOG>" -H "DD-APPLICATION-KEY: <CLÉ_APPLICATION_DATADOG>" -d '{"data": {"type":"permissions","id": "<ID_AUTORISATION>"}}'
- Si besoin, révoquez toutes les autres autorisations liées aux logs à l’aide de l’API Révoquer une autorisation.
curl -X DELETE "https://app.datadoghq.com/api/v2/roles/<ID_RÔLE>/permissions" -H "Content-Type: application/json" -H "DD-API-KEY: <CLÉ_API_DATADOG>" -H "DD-APPLICATION-KEY: <CLÉ_APPLICATION_DATADOG>" -d '{"data": {"type":"permissions","id": "<ID_AUTORISATION>"}}'
Associer un utilisateur à un rôle
Maintenant que vos rôles sont configurés avec leurs autorisations, attribuez-les à vos utilisateurs.
Depuis la section Team de Datadog, accédez à l’onglet User. Choisissez un utilisateur et attribuez-lui le rôle ACME Admin
ou ACME User
, en plus des rôles qui lui sont peut-être déjà attribués. Vous trouverez de plus amples informations sur la gestion des utilisateurs dans la section Gestion de compte.
À l’aide de l’API List Users, récupérez l’ID de l’utilisateur auquel vous souhaitez attribuer le rôle ACME Admin
ou ACME User
. Puisque cette API est paginée, vous devrez peut-être filtrer les résultats, en utilisant, par exemple, le nom de l’utilisateur comme paramètre de requête. Dans l’exemple suivant, l’ID de l’utilisateur est 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: <CLÉ_API_DATADOG>" -H "DD-APPLICATION-KEY: <CLÉ_APPLICATION_DATADOG>"
[...]
"type": "users",
"id": "1581e993-eba0-11e9-a77a-7b9b056a262c",
"attributes": {
"name": "John Smith",
"handle": "john.smith@company.com",
[...]
},
[...]
Associer des utilisateurs à des rôles ACME
Pour chaque utilisateur, utilisez l’API Assign Role pour l’ajouter à ce rôle.
curl -X POST "https://api.datadoghq.com/api/v2/roles/<ID_RÔLE>/users" -H "Content-Type: application/json" -H "DD-API-KEY: <CLÉ_API_DATADOG>" -H "DD-APPLICATION-KEY: <CLÉ_APPLICATION_DATADOG>" -d '{"data": {"type":"users","id":"<ID_UTILISATEUR>"}}'
Supprimer un rôle par défaut pour un utilisateur
Vérifiez si l’utilisateur dispose déjà de rôles et notez les identifiants de ces rôles. Nous vous conseillons de supprimer les rôles Datadog par défaut pour ces utilisateurs. En effet, ces rôles peuvent être associés à des autorisations supplémentaires que vous ne souhaitez peut-être pas accorder à l’utilisateur.
curl -X DELETE "https://api.datadoghq.com/api/v2/roles/<ID_RÔLE>/users" -H "Content-Type: application/json" -H "DD-API-KEY: <CLÉ_API_DATADOG>" -H "DD-APPLICATION-KEY: <CLÉ_APPLICATION_DATADOG>" -d '{"data": {"type":"users","id":"<ID_UTILISATEUR>"}}'
Restreindre l’accès aux logs
Cette section explique comment accorder aux membres de l’équipe ACME (à la fois les membres ACME Admin
et ACME User
) l’accès aux logs team:acme
uniquement. À cette fin, l’autorisation Logs_Read_Data est utilisée avec des requêtes de restriction pour limiter l’accès.
Afin d’optimiser la granularité et de faciliter la maintenance, il est déconseillé d’étendre les autorisations des utilisateurs ACME pour leur permettre d’accéder à davantage de logs. Ne limitez pas d’autres rôles à la requête de restriction team:acme
. Il est préférable d’attribuer plusieurs rôles aux utilisateurs en fonction des éléments auxquels chacun d’entre eux, individuellement, doit accéder.
Cette section explique comment :
- Créer une requête de restriction
team:acme
- Associer cette requête de restriction aux rôles ACME
Remarque : seule une requête de restriction peut être associée à un rôle. Si vous associez une requête de restriction à un rôle, toute requête de restriction déjà associée à ce rôle sera supprimée.
Utilisez l’API Create Restriction Query pour créer une requête de restriction. Notez l’ID de la requête de restriction (76b2c0e6-98fa-11ea-93e6-775bd9258d59
dans l’exemple suivant).
curl -X POST "https://app.datadoghq.com/api/v2/logs/config/restriction_queries" -H "Content-Type: application/json" -H "DD-API-KEY: <CLÉ_API_DATADOG>" -H "DD-APPLICATION-KEY: <CLÉ_APPLICATION_DATADOG>" -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"
}
}
}
Ensuite, associez la requête de restriction précédente aux rôles ACME à l’aide de l’API Restriction Query. Répétez cette opération avec les ID des rôles ACME Admin
et ACME User
.
curl -X POST "https://app.datadoghq.com/api/v2/logs/config/restriction_queries/<ID_REQUÊTE_RESTRICTION>/roles" -H "Content-Type: application/json" -H "DD-API-KEY: <CLÉ_API_DATADOG>" -H "DD-APPLICATION-KEY: <CLÉ_APPLICATION_DATADOG>" -d '{"data": {"type": "roles","id": "<ID_RÔLE>"}}'
Enfin, activez les autorisations logs_read_data
pour le rôle à l’aide de l’API Grant Permissions. Reportez-vous à la section Récupérer les ID des autorisations pour obtenir les ID correspondants.
curl -X POST "https://app.datadoghq.com/api/v2/roles/<ID_RÔLE>/permissions" -H "Content-Type: application/json" -H "DD-API-KEY: <CLÉ_API_DATADOG>" -H "DD-APPLICATION-KEY: <CLÉ_APPLICATION_DATADOG>" -d '{"data": {"type":"permissions","id": "<ID_AUTORISATION>"}}'
Si vous le souhaitez, vérifiez que la configuration est correcte :
- Obtenez la liste des rôles associés à la requête à l’aide de l’API Get Roles. Seuls
ACME Admin
et ACME User
doivent s’afficher dans les résultats. - Inversement, récupérez la requête de restriction associée à l’un ou l’autre des rôles à l’aide de l’API Get Restriction Query. La requête de restriction
team:acme
doit s’afficher.
Restreindre l’accès aux ressources de log
Cette section explique comment accorder aux membres disposant du rôle ACME Admin
l’autorisation d’interagir avec les ressources de log ACME (à savoir, les pipelines de logs, les index de logs et les archives de logs).
Ainsi :
- Seuls les membres
ACME Admin
pourront interagir avec les ressources de log ACME. - Les membres
ACME Admin
ou ACME User
ne pourront pas interagir avec les ressources des autres équipes. - Les membres
ACME Admin
ou ACME User
ne pourront pas interférer avec les configurations « Admin » de niveau supérieur, telles que les logs transmis dans leurs ressources, les limitations budgétaires ou les [règles de restriction d’accès aux logs] (#restreindre-l-acces-aux-logs).
Afin d’optimiser la granularité et de faciliter la maintenance, il est déconseillé d’accorder à d’autres rôles l’autorisation de modifier les ressources de log ACME. Il est préférable d’accorder le rôle ACME Admin
à certains utilisateurs de ces autres rôles.
Pipelines de logs
Créez un pipeline pour les logs team:acme
. Attribuez l’autorisation Write Processor aux membres ACME Admin
, mais limitez cette autorisation à ce pipeline ACME « racine ».
Index de logs
Créez un ou plusieurs index pour les logs team:acme
. La création de plusieurs index peut s’avérer utile si l’équipe ACME a besoin d’un contrôle budgétaire précis (par exemple, des index avec des périodes de rétention différentes ou des index avec des quotas différents). Attribuez l’autorisation Write Exclusion Filters aux membres de l’équipe ACME Admin
, mais limitez cette autorisation à cet ou ces index ACME.
Archives de logs
Lire les archives
Créez une ou plusieurs archives pour les logsteam:acme
. Attribuez l’autorisation Read Archives aux membres ACME Admin
, mais limitez cette autorisation à cette ou ces archives ACME.
La création de plusieurs archives peut s’avérer utile si vous disposez de différentes politiques de cycle de vie en fonction des logs (par exemple, pour les logs de production et de staging). N’oubliez pas que la réintégration des logs ne fonctionne que pour une seule archive à la fois, bien qu’il soit possible de lancer plusieurs réintégrations à partir de plusieurs archives en même temps.
Écrire des vues historiques
Attribuez l’autorisation logs_write_historical_views aux membres ACME Admin
. Cette autorisation permet à un rôle d’effectuer des réintégrations à partir d’archives.
Si vous le souhaitez, vous pouvez configurer vos archives de logs de manière à ce que le tag team:acme
soit appliqué à tous les logs réintégrés à partir d’une archive précise, que le tag ait déjà été appliqué ou non à ces logs dans l’archive. Cette option vous permet d’assurer la cohérence avec vos politiques de restriction existantes, ainsi que de supprimer les restrictions obsolètes qui empêchent les logs d’être acheminés ou indexés dans Datadog.
Remarque : si vous utilisez l’autorisation obsolète logs_read_index_data, ajoutez le rôle ACME User
aux archives ACME en plus du rôle ACME Admin
. Étant donné que les utilisateurs disposant du rôle ACME User
ne sont pas autorisés à effectuer une réintégration à partir des archives, ils ne disposeront pas d’autorisations sensibles. Toutefois, l’autorisation logs_read_index_data est ainsi automatiquement limitée à la vue historique obtenue, permettant ainsi aux utilisateurs d’accéder au contenu.
Pour aller plus loin
Documentation, liens et articles supplémentaires utiles: