

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

# AWS データソースの Amazon Managed Grafana アクセス許可とポリシー
<a name="AMG-manage-permissions"></a>

Amazon Managed Grafana には、次の 3 つのアクセス許可モードがあります。
+ 現在のアカウントの「サービス管理」のアクセス許可
+ 組織の「サービス管理」のアクセス許可
+ 「カスタマー管理」のアクセス許可

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

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

## サービス管理のアクセス許可 (単一アカウント用)
<a name="AMG-service-managed-account"></a>

このモードを選択した場合、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:*:{{111122223333}}:grafana*"
            ]
        }
    ]
}
```

**Timestream**  
Amazon Managed Grafana は、 AWS 管理ポリシー **AmazonTimestreamReadOnlyAccess** をアタッチします。

**X-Ray**  
Amazon Managed Grafana は、 AWS 管理ポリシー **AWSXrayReadOnlyAccess** をアタッチします。

## 組織の「サービス管理」のアクセス許可
<a name="AMG-service-managed-organization"></a>

このモードは、組織内の管理アカウントまたは被委任管理者アカウントで作成されたワークスペースにのみ対応しています。被委任管理者アカウントでは、組織のスタックセットの作成や管理が可能です。被委任管理者の追加の詳細については、「[被委任管理者アカウントの登録](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-orgs-delegated-admin.html)」を参照してください。

**注記**  
組織の管理アカウントに Amazon Managed Grafana ワークスペースなどのリソースを作成することは、 AWS セキュリティのベストプラクティスに違反します。

このモードでは、Amazon Managed Grafana は、 AWS 組織内の他のアカウントのリソースにアクセス AWS するために必要なすべての IAM ロールを作成します。Amazon Managed Grafana によって、選択した組織単位の各アカウントに **AmazonGrafanaOrgMemberRole -{{random-id}}** というロールが作成されます。このロールの作成は、 AWS CloudFormation StackSets との統合を通じて実行されます。

このロールには、ワークスペースで使用するように選択した AWS データソースごとにポリシーがアタッチされています。これらのデータポリシーの内容については、「[サービス管理のアクセス許可 (単一アカウント用)](#AMG-service-managed-account)」を参照してください。

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

このモードを使用するには、組織内の AWS 信頼されたサービスとして CloudFormation Stacksets を有効にする必要があります。詳細については、「 [で信頼されたアクセスを有効にする AWS Organizations](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-orgs-enable-trusted-access.html)」を参照してください。

以下は、**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}}** の内容です。

------
#### [ JSON ]

****  

```
{ 
    "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}}" 
    }]
}
```

------

## 「カスタマー管理」のアクセス許可
<a name="AMG-customer-managed"></a>

カスタマー管理のアクセス許可を使用する場合、Amazon Managed Grafana ワークスペースを作成する際に、アカウントで既存の IAM ロールを指定します。ロールには、`grafana.amazonaws.com` を信頼する信頼ポリシーが必要です。

以下に、このようなポリシーの例を示します。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "grafana.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

そのロールがそのアカウントの AWS データソースまたは通知チャネルにアクセスするには、このセクションで前述したポリシーのアクセス許可が必要です。例えば、CloudWatch データソースを使用するには、[サービス管理のアクセス許可 (単一アカウント用)](#AMG-service-managed-account) に記載されている CloudWatch ポリシーのアクセス許可が必要です。

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

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

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

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