AWS データソースの Amazon Managed Grafana アクセス許可とポリシー - Amazon Managed Grafana

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS データソースの Amazon Managed Grafana アクセス許可とポリシー

Amazon Managed Grafana には、次の 3 つのアクセス許可モードがあります。

  • 現在のアカウントの「サービス管理」のアクセス許可

  • 組織の「サービス管理」のアクセス許可

  • 「カスタマー管理」のアクセス許可

ワークスペースの作成時に、使用するアクセス許可モードを選択します。ここで選択した内容は後で変更できます。

どのサービス管理のアクセス許可モードを選択した場合も、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 を使用していたワークスペースには、AmazonGrafanaCloudWatchPolicy -random-id という名前のカスタマー管理のポリシーが作成されました。

Amazon OpenSearch Service

Amazon Managed Grafana によって、AmazonGrafanaOpenSearchPolicy -random-id という名前のカスタマー管理のポリシーが作成されます。データソースへのアクセスには、Get/Post アクセス許可が必要です。List/Describe アクセス許可は、データソースの検出に 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 によって、AmazonGrafanaPrometheusPolicy-random-id という名前のカスタマー管理のポリシーが作成されます。List/Describe アクセス許可は、データソースの検出に 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 によって、AmazonGrafanaSNSPolicy-random-id という名前のカスタマー管理のポリシーが作成されます。このポリシーにより、 アカウント内で使用できる 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 組織内の他のアカウントの AWS リソースにアクセスするために必要なすべての IAM ロールが作成されます。Amazon Managed Grafana によって、選択した組織単位の各アカウントに AmazonGrafanaOrgMemberRole -random-id というロールが作成されます。このロールの作成は、 StackSets AWS CloudFormation との統合を通じて行われます。

このロールには、ワークスペースで使用することを選択した 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 ポリシーのアクセス許可が必要です。

サービス管理のアクセス許可 (単一アカウント用) で挙げた Amazon OpenSearch Service および Amazon Managed Service for Prometheus のポリシーの List および Describe アクセス許可は、データソースの検出とプロビジョニングが正しく機能するためにのみ必要です。これらのデータソースを手動で設定するだけの場合は必要ありません。

クロスアカウントアクセス

アカウント 111111111111 でワークスペースを作成する場合、アカウント 1111111111111 のロールを指定する必要があります。この例では、このロール WorkspaceRole を呼び出します。アカウント 999999999999 のデータにアクセスするには、アカウント 999999999999 にロールを作成する必要があります。その DataSourceRole を呼び出します。次に、WorkspaceRoleDataSourceRole の間に信頼関係を確立する必要があります。2 つのロール間で信頼を確立する方法については、「IAM チュートリアル: IAM ロールを使用して AWS アカウント間でアクセスを委任する」を参照してください。

DataSourceRole には、使用する各データソースについて、このセクションの冒頭に挙げたポリシーステートメントを含める必要があります。信頼関係が確立されたら、ワークスペース内の任意の AWS データソースのデータソース設定ページの [Assume Role ARN (ロール ARN を引き受ける)] フィールドに、DataSourceRole の ARN (arn:aws:iam::999999999999:role:DataSourceRole) を指定できます。その後、データソースは DataSourceRole] で定義されているアクセス許可でアカウント 999999999999 にアクセスします。