本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon Managed Grafana 对数据来源的权限和策略 AWS
Amazon Managed Grafana 提供三种权限模式:
-
当前账户的服务管理权限
-
组织的服务管理权限
-
客户管理的权限
创建工作区时,您可以选择要使用的权限模式。如果需要,您也可以稍后更改。
在任一服务管理的权限模式下,Amazon Managed Grafana 都会创建所需的角色和策略,以访问和 AWS 发现账户或组织中的数据来源。然后,您可以选择在 IAM 控制台中编辑这些策略。
单个账户的服务管理权限
在此模式下,Amazon Managed Grafana 会创建一个名为-的角色。AmazonGrafanaServiceRole random-id
然后,Amazon Managed Grafana 会针对您选择从Amazon Managed Grafana 工作区访问的 AWS 每个服务,将相应的策略附加到此角色。
- CloudWatch
-
Amazon Managed Grafana 会附 AWS 加管理的策略。AmazonGrafanaCloudWatchAccess
注意
对于在创建AmazonGrafanaCloudWatchAccess管理的策略 CloudWatch 之前使用的工作区,Amazon Managed Grafana 会创建名称为-的客户管理型策略。AmazonGrafanaCloudWatchPolicy
random-id
- 亚马逊 OpenSearch 服务
-
Amazon Managed Grafana 会创建名称为-的客户管理型策略。AmazonGrafanaOpenSearchPolicy
random-id
Amazon Managed Grafana 会使用这些Get/Post permissions are needed for data source access. The List/Describe权限来发现数据来源,但数据来源插件的运行并不需要这些权限。策略的内容如下所示:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "es:ESHttpGet", "es:DescribeElasticsearchDomains", "es:ListDomainNames" ], "Resource": "*" }, { "Effect": "Allow", "Action": "es:ESHttpPost", "Resource": [ "arn:aws:es:*:*:domain/*/_msearch*", "arn:aws:es:*:*:domain/*/_opendistro/_ppl" ] } ] }
- AWS IoT SiteWise
-
Amazon Managed Grafana 附加 AWS 了托管策略。AWSIoTSiteWiseReadOnlyAccess
- Amazon Redshift
-
Amazon Managed Grafana 会附 AWS 加管理的策略。AmazonGrafanaRedshiftAccess
- Amazon Athena
-
Amazon Managed Grafana 会附 AWS 加管理的策略。AmazonGrafanaAthenaAccess
- Amazon Managed Service for Prometheus
-
Amazon Managed Grafana 会创建名称为-的客户管理型策略。AmazonGrafanaPrometheusPolicy
random-id
Amazon Managed Grafana 会使用 List/Describe 权限来发现数据来源,但插件的运行并不需要这些权限。策略的内容如下所示:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "aps:ListWorkspaces", "aps:DescribeWorkspace", "aps:QueryMetrics", "aps:GetLabels", "aps:GetSeries", "aps:GetMetricMetadata" ], "Resource": "*" } ] }
- Amazon SNS
-
Amazon Managed Grafana 会创建名称为-的客户管理型策略。AmazonGrafana SNSPolicy
random-id
该策略限制您只能使用账户中以字符串grafana
开头的 SNS 主题。如果您创建了自己的策略,则无需受此限制。策略的内容如下所示:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sns:Publish" ], "Resource": [ "arn:aws:sns:*:
accountId
:grafana*" ] } ] } - Timestream
-
Amazon Managed Grafana 会附 AWS 加管理的策略。AmazonTimestreamReadOnlyAccess
- X-Ray
-
Amazon Managed Grafana 附加 AWS 了托管策略。AWSXrayReadOnlyAccess
组织的服务管理权限
该模式仅支持在组织的管理账户或委托管理员账户中创建的工作区。委托管理员账户可以为组织创建和管理堆栈集。有关委托管理员账户的更多信息,请参阅注册委托管理员。
注意
在组织的管理账户中创建 Amazon Managed Grafana 工作区等资源违反安全最佳实践。 AWS
在此模式下,Amazon Managed Grafana 会创建 AWS
访问您组织中其他账户资源所需的所有 IAM 角色。 AWS 在您选择的组织单位中的每个账户中,Amazon Managed Grafana 都会创建一个名为-的角色。AmazonGrafanaOrgMemberRole random-id
将通过与的集成来执行此角色的创建 AWS CloudFormation StackSets。
对于您选择在工作区中使用的每个 AWS 数据来源,该角色都有一个附加的策略。有关这些数据策略的内容,请参阅 单个账户的服务管理权限 。
Amazon Managed Grafana 还会在组织的管理账户中创建一个AmazonGrafanaOrgAdminRole名为 random-id
-的角色。此角色使 Amazon Managed Grafana 工作区有权限访问组织中的其他账户。 AWS 服务通知渠道策略也将附加到此角色。使用工作区中的 AWS 数据来源菜单,可为工作区可以访问的每个账户快速预置数据来源。
要使用此模式,您必须在您的组织中将 AWS CloudFormation Stacksets 作为可信服务启用。 AWS 有关更多信息,请参阅使用启用可信访问权限 AWS Organizations。
以下是 AmazonGrafanaStackSet-random-id
堆栈集的内容:
Parameters: IncludePrometheusPolicy: Description: Whether to include Amazon Prometheus access in the role Type: String AllowedValues: - true - false Default: false IncludeAESPolicy: Description: Whether to include Amazon Elasticsearch access in the role Type: String AllowedValues: - true - false Default: false IncludeCloudWatchPolicy: Description: Whether to include CloudWatch access in the role Type: String AllowedValues: - true - false Default: false IncludeTimestreamPolicy: Description: Whether to include Amazon Timestream access in the role Type: String AllowedValues: - true - false Default: false IncludeXrayPolicy: Description: Whether to include AWS X-Ray access in the role Type: String AllowedValues: - true - false Default: false IncludeSitewisePolicy: Description: Whether to include AWS IoT SiteWise access in the role Type: String AllowedValues: - true - false Default: false IncludeRedshiftPolicy: Description: Whether to include Amazon Redshift access in the role Type: String AllowedValues: - true - false Default: false IncludeAthenaPolicy: Description: Whether to include Amazon Athena access in the role Type: String AllowedValues: - true - false Default: false RoleName: Description: Name of the role to create Type: String AdminAccountId: Description: Account ID of the Amazon Grafana org admin Type: String Conditions: addPrometheus: !Equals [!Ref IncludePrometheusPolicy, true] addAES: !Equals [!Ref IncludeAESPolicy, true] addCloudWatch: !Equals [!Ref IncludeCloudWatchPolicy, true] addTimestream: !Equals [!Ref IncludeTimestreamPolicy, true] addXray: !Equals [!Ref IncludeXrayPolicy, true] addSitewise: !Equals [!Ref IncludeSitewisePolicy, true] addRedshift: !Equals [!Ref IncludeRedshiftPolicy, true] addAthena: !Equals [!Ref IncludeAthenaPolicy, true] Resources: PrometheusPolicy: Type: AWS::IAM::Policy Condition: addPrometheus Properties: Roles: - !Ref GrafanaMemberServiceRole PolicyName: AmazonGrafanaPrometheusPolicy PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: - aps:QueryMetrics - aps:GetLabels - aps:GetSeries - aps:GetMetricMetadata - aps:ListWorkspaces - aps:DescribeWorkspace Resource: '*' AESPolicy: Type: AWS::IAM::Policy Condition: addAES Properties: Roles: - !Ref GrafanaMemberServiceRole PolicyName: AmazonGrafanaElasticsearchPolicy PolicyDocument: Version: '2012-10-17' Statement: - Sid: AllowReadingESDomains Effect: Allow Action: - es:ESHttpGet - es:ESHttpPost - es:ListDomainNames - es:DescribeElasticsearchDomains Resource: '*' CloudWatchPolicy: Type: AWS::IAM::Policy Condition: addCloudWatch Properties: Roles: - !Ref GrafanaMemberServiceRole PolicyName: AmazonGrafanaCloudWatchPolicy PolicyDocument: Version: '2012-10-17' Statement: - Sid: AllowReadingMetricsFromCloudWatch Effect: Allow Action: - cloudwatch:DescribeAlarmsForMetric - cloudwatch:DescribeAlarmHistory - cloudwatch:DescribeAlarms - cloudwatch:ListMetrics - cloudwatch:GetMetricStatistics - cloudwatch:GetMetricData - cloudwatch:GetInsightRuleReport Resource: "*" - Sid: AllowReadingLogsFromCloudWatch Effect: Allow Action: - logs:DescribeLogGroups - logs:GetLogGroupFields - logs:StartQuery - logs:StopQuery - logs:GetQueryResults - logs:GetLogEvents Resource: "*" - Sid: AllowReadingTagsInstancesRegionsFromEC2 Effect: Allow Action: - ec2:DescribeTags - ec2:DescribeInstances - ec2:DescribeRegions Resource: "*" - Sid: AllowReadingResourcesForTags Effect: Allow Action: - tag:GetResources Resource: "*" GrafanaMemberServiceRole: Type: 'AWS::IAM::Role' Properties: RoleName: !Ref RoleName AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: AWS: !Sub arn:aws:iam::${AdminAccountId}:root Action: - 'sts:AssumeRole' Path: /service-role/ ManagedPolicyArns: - !If [addTimestream, arn:aws:iam::aws:policy/AmazonTimestreamReadOnlyAccess, !Ref AWS::NoValue] - !If [addXray, arn:aws:iam::aws:policy/AWSXrayReadOnlyAccess, !Ref AWS::NoValue] - !If [addSitewise, arn:aws:iam::aws:policy/AWSIoTSiteWiseReadOnlyAccess, !Ref AWS::NoValue] - !If [addRedshift, arn:aws:iam::aws:policy/service-role/AmazonGrafanaRedshiftAccess, !Ref AWS::NoValue] - !If [addAthena, arn:aws:iam::aws:policy/service-role/AmazonGrafanaAthenaAccess, !Ref AWS::NoValue]
以下是 AmazonGrafanaOrgAdminPolicy- 的内容random-id
。
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "organizations:ListAccountsForParent", "organizations:ListOrganizationalUnitsForParent" ], "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "o-
organizationId
" } } }, { "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Resource": "arn:aws:iam::*:role/service-role/AmazonGrafanaOrgMemberRole-random-Id
" }] }
客户管理的权限
如果您选择使用客户管理的权限,在创建 Amazon Managed Grafana 工作区时,应指定账户中现有的 IAM 角色。该角色必须具有信任 grafana.amazonaws.com
的信任策略。
以下是此类策略的一个示例:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "grafana.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
要让该角色访问该账户中的 AWS 数据来源或通知渠道,其必须拥有本节前面列出的策略中的权限。例如,要使用 CloudWatch 数据源,它必须具有中列出的 CloudWatch 策略中的权限单个账户的服务管理权限 。
在中,List
针对 Amazon S OpenSearch ervice 和 Amazon Managed Service for Prometheus 的策略和Describe
权限,仅单个账户的服务管理权限 在正常发现和预置数据来源时才需要。如果您只想手动设置这些数据来源,则不需要这些权限。
跨账户访问
在账户 11111111111111 中创建工作区时,必须提供账户 111111111111111 中的角色。在此示例中,请调用此角色WorkspaceRole。要访问账户 999999999999 中的数据,必须在账户 999999999999 中创建一个角色。叫那个DataSourceRole。然后,您必须在WorkspaceRole和之间建立信任关系DataSourceRole。有关在两个角色之间建立信任关系的更多信息,请参阅 IAM 教程:使用 IAM 角色委托跨 AWS 账户的访问权限。
DataSourceRole需要包含本节前面为要使用的每个数据来源列出的策略声明。建立信任关系后,您可以在工作区中任何数据来源的数据来源配置页面上的承担角色 ARN 字段中,指定 DataSourceRole(arn: aws: iam:: 99999999: role:DataSourceRole) 的 ARN。 AWS 然后,数据来源将使用中定义的权限访问账户 99999999。DataSourceRole