Datadog AWS Integration 설정(IAM Role)
AWS Integration 설정에 대한 액세스 키의 설정이 아니라 IAM Role의 위임에 대한 설정이 권장된다는 알림이 있었습니다.
자체 환경에서는 IAM User에서 데이터를 수집했으며 IAM Role에서 설정을 수행하지 않았기 때문에 설정을 변경했습니다.
사전 준비
IAM Role을 만드는 데 필요한 JSON 파일을 준비합니다.
정책 파일 작성
DatadogAWSIntegrationPolicy.json
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"autoscaling:Describe*",
"cloudtrail:DescribeTrails",
"cloudtrail:GetTrailStatus",
"cloudwatch:Describe*",
"cloudwatch:Get*",
"cloudwatch:List*",
"dynamodb:list*",
"dynamodb:describe*",
"ec2:Describe*",
"ec2:Get*",
"ecs:Describe*",
"ecs:List*",
"elasticache:Describe*",
"elasticache:List*",
"elasticloadbalancing:Describe*",
"elasticmapreduce:List*",
"elasticmapreduce:Describe*",
"kinesis:List*",
"kinesis:Describe*",
"logs:Get*",
"logs:Describe*",
"logs:FilterLogEvents",
"logs:TestMetricFilter",
"rds:Describe*",
"rds:List*",
"route53:List*",
"ses:Get*",
"sns:List*",
"sns:Publish",
"sqs:GetQueueAttributes",
"sqs:ListQueues",
"sqs:ReceiveMessage",
"support:*"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
AssumeRolePolicyDocument.json.base
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::__DDACCOUNTID__:root"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "__DDEXTERNALID__"
}
}
}
]
}
각 설정값(명칭)
각 자원의 이름은 다음을 사용합니다.
종류
이름
PolicyName
DatadogAWSIntegrationPolicy
PolicyDocument
DatadogAWSIntegrationPolicy.json
RoleName
DatadogAWSIntegrationRole
AssumeRolePolicyDocument
AssumeRolePolicyDocument.json
$ PolicyName="DatadogAWSIntegrationPolicy" ; echo "PolicyName: ${PolicyName}"
PolicyName: DatadogAWSIntegrationPolicy
$ PolicyDocument="DatadogAWSIntegrationPolicy.json" ; echo "PolicyDocument: ${PolicyDocument}"
PolicyDocument: DatadogAWSIntegrationPolicy.json
$ RoleName="DatadogAWSIntegrationRole" ; echo "RoleName: ${RoleName}"
RoleName: DatadogAWSIntegrationRole
$ AssumeRolePolicyDocument="AssumeRolePolicyDocument.json" ; echo "AssumeRolePolicyDocument: ${AssumeRolePolicyDocument}"
AssumeRolePolicyDocument: AssumeRolePolicyDocument.json
IAM role 만들기
정책 작성
$ aws iam create-policy --policy-name ${PolicyName} --policy-document file://${PolicyDocument}
{
"Policy": {
"PolicyName": "DatadogAWSIntegrationPolicy",
"CreateDate": "2016-07-DDTHH:MM:SS.923Z",
"AttachmentCount": 0,
"IsAttachable": true,
"PolicyId": "ANPXXXXXXXXXXXXXXXXXX",
"DefaultVersionId": "v1",
"Path": "/",
"Arn": "arn:aws:iam::5XXXXXXXXXXX:policy/DatadogAWSIntegrationPolicy",
"UpdateDate": "2016-07-DDTHH:MM:SS.923Z"
}
}
ARN 설정
$ aws iam create-policy --policy-name ${PolicyName} --policy-document file://${PolicyDocument}
{
"Policy": {
"PolicyName": "DatadogAWSIntegrationPolicy",
"CreateDate": "2016-07-DDTHH:MM:SS.923Z",
"AttachmentCount": 0,
"IsAttachable": true,
"PolicyId": "ANPXXXXXXXXXXXXXXXXXX",
"DefaultVersionId": "v1",
"Path": "/",
"Arn": "arn:aws:iam::5XXXXXXXXXXX:policy/DatadogAWSIntegrationPolicy",
"UpdateDate": "2016-07-DDTHH:MM:SS.923Z"
}
}
$ ARN="arn:aws:iam::5XXXXXXXXXXX:policy/DatadogAWSIntegrationPolicy" ; echo "ARN: ${ARN}"
# CLIで代入
# ARN=$(aws iam list-policies --scope Local | jq -r '.Policies[] | select(.PolicyName == "'${PolicyName}'") | .Arn') ; echo "ARN: ${ARN}"
ARN: arn:aws:iam::5XXXXXXXXXXX:policy/DatadogAWSIntegrationPolicy
Datadog에서 필요한 정보 얻기
AccountID
$ DDACID=464622532012 ; echo "DatadogAccountID: ${DDACID}"
DatadogAccountID: 464622532012
ExternalID
$ DDEXTID="4fXXXXXXXXXXXXXXXXXXXXXXXXXXXX" ; echo "DatadogExternalID: ${DDEXTID}"
DatadogExternalID: 4fXXXXXXXXXXXXXXXXXXXXXXXXXXXX
PolicyDocument.json 생성 (치환)
$ sed -e "s%__DDACCOUNTID__%${DDACID}%" -e "s%__DDEXTERNALID__%${DDEXTID}%" ${AssumeRolePolicyDocument}.base > ${AssumeRolePolicyDocument}
diff ${AssumeRolePolicyDocument}.base ${AssumeRolePolicyDocument}
7c7
< "AWS": "arn:aws:iam::__DDACCOUNTID__:root"
---
> "AWS": "arn:aws:iam::464622532012:root"
12c12
< "sts:ExternalId": "__DDEXTERNALID__"
---
> "sts:ExternalId": "4fXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
IAM 역할 만들기
# IAMロール作成
$ aws iam create-role --role-name ${RoleName} --assume-role-policy-document file://${AssumeRolePolicyDocument}
{
"Role": {
"AssumeRolePolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com"
}
}
]
},
"RoleId": "AROXXXXXXXXXXXXXXXXXX",
"CreateDate": "2016-07-DDTHH:MM:SS.552Z",
"RoleName": "DatadogAWSIntegrationRole",
"Path": "/",
"Arn": "arn:aws:iam::9XXXXXXXXXXX:role/DatadogAWSIntegrationRole"
}
}
# ポリシー付与
$ aws iam attach-role-policy --role-name ${RoleName} --policy-arn ${ARN}
# ポリシー付与確認
$ aws iam list-attached-role-policies --role-name ${RoleName}
{
"AttachedPolicies": [
{
"PolicyName": "DatadogAWSIntegrationPolicy",
"PolicyArn": "arn:aws:iam::5XXXXXXXXXXX:policy/DatadogAWSIntegrationPolicy"
}
]
}
IAM 생성 결과
Datadog Integration으로 설정
결과
대상 AWS 계정에서 정보를 검색합니다.
Reference
이 문제에 관하여(Datadog AWS Integration 설정(IAM Role)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/htnosm/items/f3c6e8b69b32ff49ead8
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Datadog AWS Integration 설정(IAM Role)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/htnosm/items/f3c6e8b69b32ff49ead8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)