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

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

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

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

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

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

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

ワークスペースを作成するときは、使用するアクセス許可モードを選択します。必要に応じて、後でこれを変更することもできます。

どちらのサービス管理アクセス許可モードでも、Amazon Managed Grafana はアカウントまたは組織の AWS データソースにアクセスして検出するために必要なロールとポリシーを作成します。その後、必要に応じて IAM コンソールでこれらのポリシーを編集できます。

1 つのアカウントのサービス管理アクセス許可

このモードでは、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 という名前のカスタマー管理ポリシーを作成しました。

Amazon OpenSearch サービス

Amazon Managed Grafana は、-AmazonGrafanaOpenSearchPolicyrandom-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 は、-AmazonGrafanaPrometheusPolicyrandom-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 というロールを作成します。このロールの作成は、 との統合を通じて実行されます AWS CloudFormation StackSets。

このロールには、ワークスペースで使用する AWS データソースごとにポリシーがアタッチされています。これらのデータポリシーの内容については、「」を参照してください1 つのアカウントのサービス管理アクセス許可

Amazon Managed Grafana は、組織の管理アカウントに AmazonGrafanaOrgAdminRole-random-id というロールも作成します。このロールは、Amazon Managed Grafana ワークスペースに、組織内の他のアカウントへのアクセス許可を付与します。 AWS サービス通知チャネルポリシーもこのロールにアタッチされます。ワークスペースのAWS データソースメニューを使用して、ワークスペースがアクセスできる各アカウントのデータソースをすばやくプロビジョニングする

このモードを使用するには、組織内の AWS 信頼されたサービスとして AWS CloudFormation Stacksets を有効にする必要があります。詳細については、「 で信頼されたアクセスを有効にする AWS Organizations」を参照してください。

-AmazonGrafanaStackSetrandom-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]

-AmazonGrafanaOrgAdminPolicyrandom-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 ポリシーのアクセス許可が必要です1 つのアカウントのサービス管理アクセス許可

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

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

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

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