亚马逊托管 Grafana 数据源的权限和政策 AWS - Amazon Managed Grafana

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

亚马逊托管 Grafana 数据源的权限和政策 AWS

Amazon Managed Grafana 提供三种权限模式:

  • 当前账户的服务管理权限

  • 组织的服务托管权限

  • 客户管理的权限

创建工作区时,您可以选择要使用的权限模式。如果你愿意,你也可以稍后更改此设置。

在任一服务托管权限模式下,Amazon Managed Grafana 都会创建访问和 AWS 发现您的账户或组织中的数据源所需的角色和策略。然后,如果您愿意,可以在 IAM 控制台中编辑这些策略。

单个账户的服务管理权限

在这种模式下,Amazon Managed Grafana 会创建一个名为-random-id 的角色AmazonGrafanaServiceRole。然后,Amazon Managed Grafana 会为你选择从亚马逊托管 Grafana 工作空间访问的 AWS 每项服务附加一个策略。

CloudWatch

Amazon Managed Grafana 附加 AWS 了托管策略。AmazonGrafanaCloudWatchAccess

注意

对于在创建AmazonGrafanaCloudWatchAccess托管策略 CloudWatch 之前使用的工作空间,Amazon Managed Grafana 创建了一个名为 random-id 的客户托管策略。AmazonGrafanaCloudWatchPolicy

亚马逊 OpenSearch 服务

Amazon Managed Grafana 创建了一个名为 random-id 的客户托管策略。AmazonGrafanaOpenSearchPolicy访问数据源需要 “获取/发布” 权限。Amazon Managed Grafana 使用列表/描述权限来发现数据源,但数据源插件不需要这些权限即可运行。该政策的内容如下:

{ "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 创建了一个名为 random-id 的客户托管策略。AmazonGrafanaPrometheusPolicy“列表/描述” 权限由 Amazon Managed Grafana 用于数据源发现,插件无需这些权限即可运行。该政策的内容如下:

{ "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 创建了一个名为 snsPolicy-random-id 的客户托管策略。AmazonGrafana该政策限制您只能在账户中使用以字符串开头的 SNS 主题。grafana如果您创建自己的策略,则无需这样做。该政策的内容如下:

{ "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 都会创建一个名为-random-id 的角色AmazonGrafanaOrgMemberRole。此角色创建是通过与的集成来执行 AWS CloudFormation StackSets的。

对于您选择在工作空间中使用的每个 AWS 数据源,该角色都有一个附加的策略。有关这些数据政策的内容,请参阅单个账户的服务管理权限

Amazon Managed Grafana 还在组织的管理账户中创建了一个AmazonGrafanaOrgAdminRole名为 - random-id 的角色。此角色允许 Amazon Managed Grafana 工作空间访问组织中的其他账户。 AWS 服务通知渠道策略也将附加到此角色。使用工作空间中的 “AWS 数据源” 菜单,为工作空间可以访问的每个帐户快速配置数据源

要使用此模式,您必须在组织中启用 AWS CloudFormation Stacksets 作为可信服务。 AWS 有关更多信息,请参阅使用启用可信访问 AWS Organizations

以下是-r andom AmazonGrafanaStackSet-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]

以下是-r andom AmazonGrafanaOrgAdminPolicy-i d 的内容。

{ "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权限。如果您只想手动设置这些数据源,则不需要它们。

跨账户访问

在账户 111111111111 中创建工作空间时,必须提供账户 1111111111111 中的角色。在此示例中,请调用此角色WorkspaceRole。要访问账户 999999999999 中的数据,您必须在账户 999999999999 中创建一个角色。这样称呼DataSourceRole。然后,您必须在WorkspaceRole和之间建立信任关系DataSourceRole。有关在两个角色之间建立信任的更多信息,请参阅 IAM 教程:使用 IAM 角色委派跨 AWS 账户的访问权限

DataSourceRole对于要使用的每个数据源,都需要包含本节前面列出的策略声明。建立信任关系后,您可以在工作区中任何数据源的数据源配置页面的假设角色 ARN 字段中指定 DataSourceRole(arn: aws: iam:: 9999999999: role:DataSourceRole) 的 ARN。 AWS 然后,数据源使用中定义的权限访问账户 999999999999。DataSourceRole