本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon Managed Grafana 提供三种权限模式:
-
当前账户的服务管理权限
-
组织的服务管理权限
-
客户管理的权限
创建工作区时,您可以选择要使用的权限模式。如果需要,您也可以稍后更改。
在任一服务托管权限模式下,Amazon Managed Grafana 都会创建访问和 AWS 发现您的账户或组织中的数据源所需的角色和策略。然后,您可以选择在 IAM 控制台中编辑这些策略。
单个账户的服务管理权限
在此模式下,Amazon Managed Grafana 会创建一个名为-的角色。AmazonGrafanaServiceRole random-id
然后,Amazon Managed Grafana 会为你选择从亚马逊托管 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
数据源发现和配置正常 OpenSearch 运行,才需要中显示的亚马逊服务和亚马逊 Prometheus 托管服务策略单个账户的服务管理权限 中的和Describe
权限。如果您只想手动设置这些数据来源,则不需要这些权限。
跨账户访问
在账户 11111111111111 中创建工作区时,必须提供账户 111111111111111 中的角色。在此示例中,请调用此角色WorkspaceRole。要访问账户 999999999999 中的数据,必须在账户 999999999999 中创建一个角色。这样称呼DataSourceRole。然后,您必须在WorkspaceRole和之间建立信任关系DataSourceRole。有关在两个角色之间建立信任的更多信息,请参阅 IAM 教程:使用 IAM 角色委派跨 AWS 账户的访问权限。
DataSourceRole对于要使用的每个数据源,都需要包含本节前面列出的策略声明。建立信任关系后,您可以在工作区中任何数据源的数据源配置页面的假设角色 ARN 字段中指定 DataSourceRole(arn: aws: iam:: 9999999999: role:DataSourceRole) 的 ARN。 AWS 然后,数据源使用中定义的权限访问账户 999999999999。DataSourceRole