Guide de configuration manuelle d'AWS

Présentation

Référez-vous à ce guide pour configurer manuellement l’intégration Datadog/AWS.

Pour configurer manuellement l’intégration AWS, créez une stratégie IAM et un rôle IAM dans votre compte AWS, puis configurez le rôle avec un ID externe AWS généré dans votre compte Datadog. Le compte AWS de Datadog pourra ainsi interroger les API AWS à votre place et récupérer les données dans votre compte Datadog. Les sections ci-dessous décrivent la marche à suivre pour créer chacun de ces composants puis terminer la configuration dans votre compte Datadog.

Configuration

Générer un ID externe

  1. Sur la page de configuration de l’intégration AWS, cliquez sur Add AWS Account puis sélectionnez Manually.
  2. Sélectionnez Role Delegation pour le type dʼaccès et copiez AWS External ID. Pour en savoir plus sur lʼID externe, lisez le guide dʼutilisation dʼIAM.
    Remarque : lʼID externe reste disponible et nʼest pas régénéré pendant 48 heures, sauf sʼil a été explicitement modifié par un utilisateur ou si un autre compte AWS est ajouté à Datadog pendant cette période. Vous pouvez revenir à la page Add New AWS Account pendant cette période pour terminer le processus dʼajout de compte sans modifier lʼID externe.

Stratégie IAM AWS pour Datadog

Créez une stratégie IAM dédiée au rôle Datadog dans votre compte AWS en lui accordant les autorisations nécessaires pour profiter de chaque intégration AWS proposée par Datadog. Ces autorisations seront susceptibles de changer si d’autres composants sont ajoutés à une intégration.

  1. Créez une nouvelle stratégie dans la console IAM d’AWS.
  2. Sélectionnez lʼonglet JSON. Collez les stratégies dʼautorisations dans la zone de texte.
    Remarque : vous pouvez aussi choisir dʼajouter des éléments de Condition à la stratégie IAM. Des conditions peuvent par exemple être utilisées pour limiter la surveillance à certaines régions.
  3. Cliquez sur Next: Tags et Next: Review.
  4. Nommez la stratégie DatadogIntegrationPolicy ou utilisez le nom de votre choix, et saisissez une description pertinente.
  5. Cliquez sur Create policy.

Rôle IAM AWS pour Datadog

Créez un rôle IAM pour Datadog afin dʼutiliser les autorisations définies dans la stratégie IAM.

  1. Créez un nouveau rôle dans la console IAM d’AWS.
  2. Sélectionnez AWS account pour le type dʼentité fiable, puis Another AWS account.

  1. Saisissez 464622532012 pour Account ID. Il sʼagit de lʼID de compte de Datadog, qui permet à Datadog dʼaccéder à vos données AWS.

  1. Saisissez 417141415827 pour Account ID. Il sʼagit de lʼID de compte de Datadog, qui permet à Datadog dʼaccéder à vos données AWS.

  1. Si le compte AWS que vous souhaitez intégrer est un compte GovCloud, saisissez 065115117704 pour Account ID. Sinon, saisissez 392588925713. Il sʼagit de lʼID de compte de Datadog, qui permet à Datadog dʼaccéder à vos données AWS.

  1. Sélectionnez Require external ID et saisissez lʼID externe copié dans la section Générer un ID externe. Assurez-vous que Require MFA est toujours désactivé. Pour en savoir plus, consultez la section Procédure d’utilisation d’un ID externe lorsque vous accordez l’accès à vos ressources AWS à un tiers de la documentation AWS.
  2. Cliquez sur Next.
  3. Si vous avez déjà créé la stratégie, recherchez-la sur cette page et sélectionnez-la. Sinon, cliquez sur Create Policy, qui sʼouvre dans une nouvelle fenêtre, et suivez les instructions de la section précédente.
  4. Si vous le souhaitez, associez la stratégie SecurityAudit AWS au rôle pour tirer profit de la solution Cloud Security Management Misconfigurations.
  5. Cliquez sur Next.
  6. Saisissez le nom DatadogIntegrationRole ou un nom similaire pour le rôle, ainsi qu’une description pertinente.
  7. Cliquez sur Create Role.

Terminer la configuration dans Datadog

  1. Revenez à la page de configuration pour lʼintégration AWS relative à lʼajout manuel dʼun compte dans Datadog que vous avez ouverte dans un autre onglet. Cliquez sur la case pour confirmer que le rôle IAM Datadog a été ajouté au compte AWS.
  2. Saisissez lʼID de compte sans tiret, p. ex. 123456789012. Votre ID de compte est indiqué dans l’ARN du rôle créé pour Datadog.
  3. Saisissez le nom du rôle créé à la section précédente, puis cliquez sur Save. Remarque : le nom de rôle saisi dans le carré d’intégration est sensible à la casse et doit correspondre parfaitement au nom du rôle dans AWS.
  4. Si une erreur Datadog is not authorized to perform sts:AssumeRole sʼaffiche, suivez les étapes de dépannage recommandées dans lʼIU ou lisez le guide de dépannage.
  5. Patientez 10 minutes le temps que les données commencent à être recueillies, puis accédez au dashboard récapitulatif d’AWS prêt à l’emploi pour visualiser les métriques envoyées par vos services et votre infrastructure AWS :

Configuration

AWS

  1. Dans votre console AWS, créez un utilisateur IAM qui sera utilisé pour lʼintégration Datadog avec les autorisations nécessaires.
  2. Générez une clé d’accès et une clé de secret pour l’utilisateur IAM de l’intégration Datadog.

Datadog

  1. Dans le carré dʼintégration AWS, cliquez sur Add AWS Account, puis sélectionnez Manually.
  2. Sélectionnez lʼonglet Access Keys (GovCloud or China* Only).
  3. Cochez la case I confirm that the IAM User for the Datadog Integration has been added to the AWS Account.
  4. Saisissez votre Account ID, AWS Access Key et AWS Secret Key. Seules les clés d’accès et de secret pour GovCloud et la Chine sont acceptées.
  5. Cliquez sur Save.
  6. Patientez 10 minutes le temps que les données commencent à être recueillies, puis accédez au dashboard récapitulatif d’AWS prêt à l’emploi pour visualiser les métriques envoyées par vos services et votre infrastructure AWS :

* Toute utilisation des Services Datadog dans (ou en connexion avec des environnements se situant au sein de) la Chine continentale est sujette à la remarque indiquée dans la section Restricted Service Locations de notre site web.

AWS IAM permissions

AWS IAM permissions enable Datadog to collect metrics, tags, EventBridge events, and other data necessary to monitor your AWS environment.

To correctly set up the AWS Integration, you must attach the relevant IAM policies to the Datadog AWS Integration IAM Role in your AWS account.

AWS integration IAM policy

The set of permissions necessary to use all the integrations for individual AWS services.

The following permissions included in the policy document use wild cards such as List* and Get*. If you require strict policies, use the complete action names as listed and reference the Amazon API documentation for your respective services.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "apigateway:GET",
                "autoscaling:Describe*",
                "backup:List*",
                "backup:ListRecoveryPointsByBackupVault",
                "bcm-data-exports:GetExport",
                "bcm-data-exports:ListExports",
                "budgets:ViewBudget",
                "cassandra:Select",
                "cloudfront:GetDistributionConfig",
                "cloudfront:ListDistributions",
                "cloudtrail:DescribeTrails",
                "cloudtrail:GetTrailStatus",
                "cloudtrail:LookupEvents",
                "cloudwatch:Describe*",
                "cloudwatch:Get*",
                "cloudwatch:List*",
                "codedeploy:BatchGet*",
                "codedeploy:List*",
                "cur:DescribeReportDefinitions",
                "directconnect:Describe*",
                "dynamodb:Describe*",
                "dynamodb:List*",
                "ec2:Describe*",
                "ec2:GetSnapshotBlockPublicAccessState",
                "ec2:GetTransitGatewayPrefixListReferences",
                "ec2:SearchTransitGatewayRoutes",
                "ecs:Describe*",
                "ecs:List*",
                "elasticache:Describe*",
                "elasticache:List*",
                "elasticfilesystem:DescribeAccessPoints",
                "elasticfilesystem:DescribeFileSystems",
                "elasticfilesystem:DescribeTags",
                "elasticloadbalancing:Describe*",
                "elasticmapreduce:Describe*",
                "elasticmapreduce:List*",
                "es:DescribeElasticsearchDomains",
                "es:ListDomainNames",
                "es:ListTags",
                "events:CreateEventBus",
                "fsx:DescribeFileSystems",
                "fsx:ListTagsForResource",
                "glacier:GetVaultNotifications",
                "glue:ListRegistries",
                "health:DescribeAffectedEntities",
                "health:DescribeEventDetails",
                "health:DescribeEvents",
                "kinesis:Describe*",
                "kinesis:List*",
                "lambda:GetPolicy",
                "lambda:List*",
                "lightsail:GetInstancePortStates",
                "logs:DeleteSubscriptionFilter",
                "logs:DescribeLogGroups",
                "logs:DescribeLogStreams",
                "logs:DescribeSubscriptionFilters",
                "logs:FilterLogEvents",
                "logs:PutSubscriptionFilter",
                "logs:TestMetricFilter",
                "oam:ListAttachedLinks",
                "oam:ListSinks",
                "organizations:Describe*",
                "organizations:List*",
                "rds:Describe*",
                "rds:List*",
                "redshift:DescribeClusters",
                "redshift:DescribeLoggingStatus",
                "route53:List*",
                "s3:GetBucketLocation",
                "s3:GetBucketLogging",
                "s3:GetBucketNotification",
                "s3:GetBucketTagging",
                "s3:ListAccessGrants",
                "s3:ListAllMyBuckets",
                "s3:PutBucketNotification",
                "savingsplans:DescribeSavingsPlanRates",
                "savingsplans:DescribeSavingsPlans",
                "ses:Get*",
                "sns:GetSubscriptionAttributes",
                "sns:List*",
                "sns:Publish",
                "sqs:ListQueues",
                "states:DescribeStateMachine",
                "states:ListStateMachines",
                "support:DescribeTrustedAdvisor*",
                "support:RefreshTrustedAdvisorCheck",
                "tag:GetResources",
                "tag:GetTagKeys",
                "tag:GetTagValues",
                "timestream:DescribeEndpoints",
                "waf-regional:ListRuleGroups",
                "waf-regional:ListRules",
                "waf:ListRuleGroups",
                "waf:ListRules",
                "wafv2:GetIPSet",
                "wafv2:GetLoggingConfiguration",
                "wafv2:GetRegexPatternSet",
                "wafv2:GetRuleGroup",
                "wafv2:ListLoggingConfigurations",
                "xray:BatchGetTraces",
                "xray:GetTraceSummaries"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}