跳转至

AWS 云集成角色授权配置

通过角色授权,您可以将 AWS 云账号接入 观测云,无需提供长期 Access Key 和 Secret Key。

按照本文完成 AWS 侧配置后,返回 观测云 填写账号 ID 和角色名称,即可测试并保存云账号。

配置前准备

  • 准备需要接入的 AWS 账号,并确认其所属地区为中国区或国际区。
  • 确认您在该 AWS 账号中有权限创建 IAM 角色及为角色添加内联策略;如无相关权限,请联系 AWS 管理员协助。
  • 确认您可以在 观测云 中新增云账号。

本文适用于无需填写 Access Key 和 Secret Key 的角色授权模式。

步骤一 获取授权信息

  1. 在 观测云 进入集成 > 云账号管理,新建 AWS 云账号。
  2. 在选择认证方式中选择角色授权。
  3. 根据需要接入的 AWS 账号,选择中国区或国际区。
  4. 复制页面显示的 观测云 账号 ID(AWS)和外部 ID,保留此页面,后续配置时需要使用。

此处复制的是 观测云 平台提供的账号 ID,不是您自己的 AWS 账号 ID。外部 ID 由 观测云 平台自动生成,请勿自行填写其他值。

步骤二 在 AWS 中选择可信实体

  1. 登录需要接入的 AWS 账号,在 IAM 控制台进入角色 > 创建角色。
  2. 在选择可信实体页面,将可信实体类型设置为 AWS 账号。中国区控制台显示为亚马逊云科技账户。
  3. 选择另一个 AWS 账号,中国区控制台显示为另一个亚马逊云科技账户。
  4. 在账户 ID中填入步骤一复制的 观测云 账号 ID(AWS),即 观测云 平台提供的 12 位账号 ID。
  5. 勾选需要外部 ID,在外部 ID中粘贴步骤一从当前云账号配置页面复制的值。
  6. 核对账户 ID 和外部 ID 后,点击下一步,进入添加权限页面。

此处的账户 ID 是 观测云 平台提供的 AWS 账号 ID;返回 观测云 平台填写云账号信息时,填写的是您自己创建角色的 AWS 账号 ID。

步骤三 添加内联策略并创建角色

  1. 在添加权限页面,选择创建内联策略。
  2. 展开下方内容,复制完整 JSON,并替换策略编辑器中的默认内容。

    展开采集权限策略 JSON
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "account:GetAccountInformation",
            "acm:ListCertificates",
            "airflow:GetEnvironment",
            "airflow:ListEnvironments",
            "aoss:ListCollections",
            "apigateway:GET",
            "appsync:ListGraphqlApis",
            "appsync:ListTagsForResource",
            "autoscaling:Describe*",
            "aws-portal:ViewBilling",
            "backup:DescribeBackupVault",
            "backup:List*",
            "batch:DescribeJobDefinitions",
            "batch:DescribeJobQueues",
            "batch:DescribeJobs",
            "batch:ListJobs",
            "bcm-data-exports:GetExport",
            "bcm-data-exports:ListExports",
            "budgets:ViewBudget",
            "ce:GetCostAndUsageWithResources",
            "ce:GetDimensionValues",
            "cloudfront:GetDistributionConfig",
            "cloudfront:ListDistributions",
            "cloudfront:ListTagsForResource",
            "cloudtrail:DescribeTrails",
            "cloudtrail:GetTrail",
            "cloudtrail:GetTrailStatus",
            "cloudtrail:ListTrails",
            "cloudtrail:LookupEvents",
            "cloudwatch:Describe*",
            "cloudwatch:Get*",
            "cloudwatch:List*",
            "codebuild:BatchGetProjects",
            "codebuild:ListProjects",
            "codedeploy:BatchGet*",
            "codedeploy:List*",
            "cognito-idp:DescribeUserPool",
            "cognito-idp:ListUserPools",
            "cost-optimization-hub:GetRecommendation",
            "cost-optimization-hub:ListRecommendations",
            "cur:DescribeReportDefinitions",
            "dax:DescribeClusters",
            "directconnect:Describe*",
            "dms:DescribeReplicationInstances",
            "dms:DescribeReplicationTasks",
            "dms:ListTagsForResource",
            "dsql:GetCluster",
            "dsql:ListClusters",
            "dsql:ListTagsForResource",
            "dynamodb:Describe*",
            "dynamodb:List*",
            "ec2:Describe*",
            "ecr:DescribeRepositories",
            "ecs:Describe*",
            "ecs:List*",
            "eks:DescribeCluster",
            "eks:ListClusters",
            "elasticache:Describe*",
            "elasticache:List*",
            "elasticbeanstalk:DescribeEnvironments",
            "elasticfilesystem:DescribeAccessPoints",
            "elasticfilesystem:DescribeFileSystems",
            "elasticfilesystem:DescribeTags",
            "elasticloadbalancing:Describe*",
            "elasticmapreduce:Describe*",
            "elasticmapreduce:List*",
            "es:DescribeDomains",
            "es:DescribeElasticsearchDomains",
            "es:ListDomainNames",
            "es:ListTags",
            "events:CreateEventBus",
            "events:ListRules",
            "firehose:DescribeDeliveryStream",
            "firehose:ListDeliveryStreams",
            "fsx:DescribeFileSystems",
            "fsx:ListTagsForResource",
            "globalaccelerator:ListAccelerators",
            "glue:BatchGetJobs",
            "glue:GetJob",
            "glue:GetJobRuns",
            "glue:GetJobs",
            "glue:ListJobs",
            "health:DescribeAffectedEntities",
            "health:DescribeEventDetails",
            "health:DescribeEvents",
            "healthlake:DescribeFHIRDatastore",
            "healthlake:ListFHIRDatastores",
            "healthlake:ListTagsForResource",
            "iam:GetAccountAuthorizationDetails",
            "iam:GetLoginProfile",
            "iam:GetPolicyVersion",
            "iam:GetRole",
            "iam:ListAccountAliases",
            "iam:ListAttachedRolePolicies",
            "iam:ListAttachedUserPolicies",
            "iam:ListGroupsForUser",
            "iam:ListMFADevices",
            "iam:ListPolicies",
            "iam:ListPolicyTags",
            "iam:ListRoleTags",
            "iam:ListSSHPublicKeys",
            "iam:ListUserTags",
            "iam:ListUsers",
            "iam:ListVirtualMFADevices",
            "iot:GetV2LoggingOptions",
            "kafka:ListClustersV2",
            "kafkaconnect:DescribeConnector",
            "kafkaconnect:ListConnectors",
            "kinesis:Describe*",
            "kinesis:List*",
            "kinesisanalytics:ListApplications",
            "kms:DescribeKey",
            "kms:ListKeys",
            "lambda:GetFunctionConfiguration",
            "lambda:GetMicrovmImageVersion",
            "lambda:List*",
            "logs:DeleteSubscriptionFilter",
            "logs:DescribeDeliveries",
            "logs:DescribeDeliverySources",
            "logs:DescribeLogGroups",
            "logs:DescribeLogStreams",
            "logs:DescribeSubscriptionFilters",
            "logs:FilterLogEvents",
            "logs:GetDeliveryDestination",
            "logs:ListTagsForResource",
            "logs:PutSubscriptionFilter",
            "logs:TestMetricFilter",
            "memorydb:DescribeClusters",
            "memorydb:ListTags",
            "mq:ListBrokers",
            "network-firewall:DescribeFirewall",
            "network-firewall:DescribeLoggingConfiguration",
            "network-firewall:ListFirewalls",
            "oam:ListAttachedLinks",
            "oam:ListSinks",
            "organizations:Describe*",
            "organizations:List*",
            "pcs:ListClusters",
            "pcs:ListComputeNodeGroups",
            "pcs:ListQueues",
            "rds:Describe*",
            "rds:List*",
            "redshift-serverless:ListNamespaces",
            "redshift-serverless:ListTagsForResource",
            "redshift-serverless:ListWorkgroups",
            "redshift:DescribeClusters",
            "redshift:DescribeLoggingStatus",
            "route53:List*",
            "route53resolver:ListResolverQueryLogConfigs",
            "s3:GetBucketAcl",
            "s3:GetBucketLocation",
            "s3:GetBucketLogging",
            "s3:GetBucketNotification",
            "s3:GetBucketPolicy",
            "s3:GetBucketPolicyStatus",
            "s3:GetBucketPublicAccessBlock",
            "s3:GetBucketTagging",
            "s3:GetBucketVersioning",
            "s3:GetBucketWebsite",
            "s3:GetEncryptionConfiguration",
            "s3:GetLifecycleConfiguration",
            "s3:GetObject",
            "s3:GetReplicationConfiguration",
            "s3:ListAllMyBuckets",
            "s3:ListBucket",
            "s3:PutBucketNotification",
            "sagemaker:DescribeEndpoint",
            "sagemaker:ListEndpoints",
            "secretsmanager:DescribeSecret",
            "secretsmanager:ListSecrets",
            "ses:Get*",
            "ses:List*",
            "sns:GetSubscriptionAttributes",
            "sns:GetTopicAttributes",
            "sns:List*",
            "sns:Publish",
            "sqs:GetQueueAttributes",
            "sqs:GetQueueUrl",
            "sqs:ListQueueTags",
            "sqs:ListQueues",
            "ssm:GetServiceSetting",
            "ssm:ListCommands",
            "states:DescribeStateMachine",
            "states:ListStateMachines",
            "states:ListTagsForResource",
            "storagegateway:DescribeGatewayInformation",
            "storagegateway:DescribeNFSFileShares",
            "storagegateway:DescribeSMBFileShares",
            "storagegateway:ListFileShares",
            "storagegateway:ListGateways",
            "support:DescribeTrustedAdvisor*",
            "support:RefreshTrustedAdvisorCheck",
            "tag:GetResources",
            "tag:GetTagKeys",
            "tag:GetTagValues",
            "timestream:DescribeEndpoints",
            "trustedadvisor:ListRecommendationResources",
            "trustedadvisor:ListRecommendations",
            "wafv2:GetWebACL",
            "wafv2:ListLoggingConfigurations",
            "wafv2:ListWebACLs",
            "xray:BatchGetTraces",
            "xray:GetTraceSummaries"
          ],
          "Resource": "*"
        }
      ]
    }
    

    以上为基础采集所需的完整权限清单,请完整复制。

  3. 按照 AWS 页面的提示检查权限范围,处理错误或安全警告后,点击下一步。如不确定是否符合您所在组织的要求,请联系 AWS 管理员审核。

  4. 在命名、查看和创建页面,按页面提示填写角色名称,例如 CloudIntegrationRole,检查配置后点击创建角色。
  5. 记录创建的角色名称及其所属的 AWS 账号 ID,供下一步填写。

步骤四 返回 观测云 平台填写账号信息

返回步骤一保留的云账号配置页面,填写以下信息:

配置项 填写说明
账号 ID 填写您自己的 AWS 账号 ID,即步骤三创建角色的账号。不要填写页面上方的 观测云 平台账号 ID。
角色名称 填写步骤三创建的角色名称,例如 CloudIntegrationRole,无需填写完整角色 ARN。
账户别名 填写便于识别该云账号的名称,采集的数据也会携带此别名。
账号标签 按需添加标签名称和值,例如名称为 env、值为 production,点击添加;不需要时可留空。填写规则参见账号标签。

步骤五 测试并保存

  1. 点击测试,检查当前授权配置。
  2. 测试通过后,点击保存。
  3. 按照配置集成的说明安装所需的 AWS 集成,并检查是否有数据上报。

保存云账号后,仍需安装相应集成才能开始采集数据。

常见问题

测试失败怎么办?

请先核对以下信息,修正后重新测试:

  • 地区是否选择正确。
  • 账号 ID 是否为您创建角色的 AWS 账号 ID。
  • 角色名称是否与 AWS 中一致。
  • 角色信任关系中的账户 ID 是否为所选地区的 观测云 平台 AWS 账号 ID。
  • 是否勾选了需要外部 ID,填写的外部 ID 是否与当前云账号配置页面完全一致。

如仍无法通过,请将具体错误信息提供给 AWS 管理员或 观测云 支持人员协助排查。

测试通过后,为什么没有采集到数据?

请确认已安装并启用对应的 AWS 集成、选择了正确的采集区域,并已在步骤三为角色添加完整的采集权限内联策略。若采集报错提示权限不足,请联系 AWS 管理员根据具体报错核查。

重新生成外部 ID 后需要做什么?

AWS 角色信任策略中的外部 ID 也需要同步更新。两侧不一致时,后续授权可能失败并影响采集;已在采集的账号,请先联系 观测云 支持人员确认更新步骤。

文档评价

文档内容是否对您有帮助?