AWS 매뉴얼 설정 가이드

개요

이 가이드를 사용하여 Datadog AWS 통합을 수동으로 설정합니다.

AWS 통합을 수동으로 설정하려면 AWS 계정에서 IAM 정책 및 IAM 역할을 생성하고 Datadog 계정에 생성된 AWS 외부 ID로 역할을 설정합니다. 이를 통해 Datadog의 AWS 계정이 사용자 대신 AWS API를 쿼리하고 데이터를 Datadog 계정으로 가져올 수 있습니다. 아래 섹션에서는 이러한 각 구성 요소를 생성한 후 Datadog 계정에서 설정을 완료하는 단계까지 자세히 설명합니다.

Role Delegation을 사용한 S3 Log Archives 설정은 현재 제한적으로 제공됩니다. 정부용 Datadog 계정에서 이 기능을 요청하려면 Datadog 지원팀에 문의하세요.

설정

외부 ID 생성

  1. AWS 통합 설정 페이지에서 Add AWS Account를 클릭한 다음 Manually을 선택합니다.
  2. 액세스 유형에 대해 Role Delegation을 선택하고 AWS External ID를 복사합니다. 외부 ID에 대한 자세한 내용은 IAM User Guide를 참조하세요. 참고: 외부 ID는 사용자가 명시적으로 변경하거나 이 기간 동안 다른 AWS 계정이 Datadog에 추가되지 않는 한 48시간 동안 계속 사용 가능하며, 재생성되지 않습니다. 해당 기간 내에 Add New AWS Account 페이지로 돌아가서 외부 ID를 변경하지 않고 계정 추가 프로세스를 완료할 수 있습니다.

Datadog의 AWS IAM 정책

Datadog에서 제공하는 모든 AWS 통합을 활용하려면 필수 권한을 사용하여 AWS 계정에 Datadog 역할에 대한 IAM 정책을 생성합니다. 다른 구성 요소가 통합에 추가되면 이러한 권한이 변경될 수 있습니다.

  1. AWS IAM 콘솔에서 새 정책을 생성합니다.
  2. JSON 탭을 선택합니다. 텍스트 상자에 권한 정책을 붙여넣습니다. 참고: (선택 사항) 조건 요소를 IAM 정책에 추가할 수 있습니다. 예를 들어 조건을 사용하여 특정 지역으로 모니터링을 제한할 수 있습니다.
  3. Next: TagsNext: Review를 클릭합니다.
  4. 정책 이름을 DatadogIntegrationPolicy 또는 원하는 이름으로 지정하고 적절한 설명을 제공합니다.
  5. Create policy을 클릭합니다.

Datadog에 대한 AWS IAM 역할

Datadog이 IAM 정책에 정의된 권한을 사용할 수 있도록 IAM 역할을 만듭니다.

  1. AWS IAM 콘솔에서 새 역할을 생성합니다.
  2. 신뢰할 수 있는 엔티티 유형에 대해 AWS account을 선택하고 Another AWS account을 선택합니다.

  1. Account ID464622532012를 입력합니다. Datadog의 계정 ID이며, Datadog에게 AWS 데이터에 대한 액세스 권한을 부여합니다.

  1. Account ID417141415827를 입력합니다. Datadog의 계정 ID이며, Datadog에게 AWS 데이터에 대한 액세스 권한을 부여합니다.

  1. 통합하려는 AWS 계정이 GovCloud 계정인 경우 065115117704Account ID로 입력하고, 그렇지 않으면 392588925713을 입력합니다. 이는 Datadog의 계정 ID이며 Datadog에게 AWS 데이터에 대한 액세스 권한을 부여합니다.

  1. Require external ID를 선택하고 외부 ID 생성 섹션에 복사된 외부 ID를 입력합니다. Require MFA를 사용하지 않도록 설정하세요. 자세한 내용은 제3자에게 AWS 리소스 액세스 권한 부여 시 외부 ID를 사용하는 방법 AWS 설명서를 참조하세요.
  2. Next를 클릭합니다.
  3. 정책을 이미 만든 경우 이 페이지에서 정책을 검색하고 선택합니다. 그렇지 않으면 새 창에서 열리는 Create Policy를 클릭하고 이전 섹션의 지침을 따릅니다.
  4. 리소스 수집을 활성화하려면 AWS SecurityAudit 정책을 역할에 연결하세요.
  5. Next를 클릭합니다.
  6. 적절한 설명과 함께 DatadogIntegrationRole와 같은 이름을 지정합니다.
  7. Create Role을 클릭합니다.

Datadog에서 설정 완료

  1. 다른 탭에서 열었던 계정을 Datadog에 수동으로 추가하려면 AWS 통합 설정 페이지로 돌아갑니다. Datadog IAM 역할이 AWS 계정에 추가되었는지 확인하려면 체크박스를 클릭합니다.
  2. 123456789012와 같이 계정 ID를 대시 없이입력합니다. 계정 ID는 Datadog에 대해 생성된 역할의 ARN에서 확인할 수 있습니다.
  3. 이전 섹션에서 생성한 역할의 이름을 입력하고 Save를 클릭합니다. 참고: 통합 타일에 입력하는 역할 이름은 대소문자를 구분하며 AWS의 역할 이름과 정확히 일치해야 합니다.
  4. 만약 Datadog이 sts:AssumeRole 작업을 수행할 권한이 없음 오류가 발생한다면, UI에서 권장하는 문제 해결 단계를 따르거나 문제 해결 가이드를 참조하세요.
  5. 데이터 수집이 시작될 때까지 최대 10분 정도 기다린 후 사용 가능한 AWS 개요 대시보드를 통해 AWS 서비스 및 인프라스트럭처에서 전송된 메트릭을 확인합니다.

설정

AWS

  1. AWS 콘솔에서 필수 권한을 사용하여 Datadog 통합에 사용할 IAM 사용자를 생성합니다.
  2. Datadog 통합 IAM 사용자용 액세스 키와 시크릿 키를 생성하세요.

Datadog

  1. AWS 통합 타일에서 Add AWS Account를 클릭한 다음 Manually을 선택합니다.
  2. Access Keys (GovCloud or China* Only) 탭을 선택합니다.
  3. I confirm that the IAM User for the Datadog Integration has been added to the AWS Account 체크 상자를 클릭합니다.
  4. Account ID, AWS Access Key, AWS Secret Key를 입력합니다. GovCloud 및 China에 대한 액세스 및 보안 키만 허용됩니다.
  5. Save을 클릭합니다.
  6. 데이터 수집이 시작될 때까지 최대 10분 정도 기다린 후 사용 가능한 AWS 개요 대시보드를 통해 AWS 서비스 및 인프라스트럭처에서 전송된 메트릭을 확인합니다.

* 중국 본토에서(또는 내부 환경과 관련된) Datadog 서비스의 모든 사용에는 당사 웹사이트의 Restricted Service Locations 섹션에 게시된 면책 조항이 적용됩니다.

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": "*"
        }
    ]
}

AWS resource collection IAM policy

To use resource collection, you must attach AWS’s managed SecurityAudit Policy to your Datadog IAM role.

Notes:

  • Warning messages appear on the AWS integration tile in Datadog if you enable resource collection, but do not have the AWS Security Audit Policy attached to your Datadog IAM role.
  • To enable Datadog to collect account management resources from account.GetAlternateContact and account.GetContactInformation, you need to enable trusted access for AWS account management.