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.
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.
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.
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.
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 :
Créer des rôles et affecter des utilisateurs à des rôles
Si vous souhaitez effectuer ces opérations par l’intermédiaire de l’API, vous devez disposer des autorisations nécessaires à l’utilisation de l’API Log Configuration.
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.
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.
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.
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).
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.
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.
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>"
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.
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.
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).
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.
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.
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.
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 ».
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.
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.
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.