AWS 데이터 소스에 대한 Amazon Managed Grafana 권한 및 정책 - Amazon Managed Grafana

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS 데이터 소스에 대한 Amazon Managed Grafana 권한 및 정책

Amazon Managed Grafana에서는 세 가지 권한 모드를 제공합니다.

  • 현재 계정에 대한 서비스 관리형 권한

  • 조직에 대한 서비스 관리형 권한

  • 고객 관리형 권한

워크스페이스를 생성할 때 사용할 권한 모드를 선택합니다. 원하면 나중에 이를 변경할 수 있습니다.

서비스 관리형 권한 모드 중 하나에서 Amazon Managed Grafana는 계정 또는 조직에서 AWS 데이터 소스에 액세스하고 검색하는 데 필요한 역할 및 정책을 생성합니다. 그런 다음, 선택한 경우 IAM 콘솔에서 이러한 정책을 편집할 수 있습니다.

단일 계정에 대한 서비스 관리형 권한

이 모드에서 Amazon Managed Grafana는 AmazonGrafanaServiceRole-random-id 역할을 생성합니다. 그런 다음, Amazon Managed Grafana는 Amazon Managed Grafana 워크스페이스에서 액세스하도록 선택한 각 AWS 서비스에 대해 이 역할에 정책을 연결합니다.

CloudWatch

Amazon Managed Grafana는 AWS 관리형 정책, AmazonGrafanaCloudWatchAccess를 연결합니다.

참고

CloudWatch를 사용한 워크스페이스의 경우 AmazonGrafanaCloudWatchAccess 관리형 정책을 생성하기 전에 Amazon Managed Grafana는 AmazonGrafanaCloudWatchPolicy-random-id 이름의 고객 관리형 정책을 생성했습니다.

Amazon OpenSearch Service

Amazon Managed Grafana는 AmazonGrafanaOpenSearchPolicy-random-id 이름의 고객 관리형 정책을 생성합니다. 데이터 소스 액세스에는 Get/Post 권한이 필요합니다. 나열/설명 권한은 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 이름의 고객 관리형 정책을 생성합니다. 나열/설명 권한은 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 이름의 고객 관리형 정책을 생성합니다. 이 정책은 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 조직의 다른 계정에 있는 AWS 리소스에 액세스하는 데 필요한 모든 IAM 역할을 생성합니다. 선택한 조직 단위의 각 계정에서 Amazon Managed Grafana는 AmazonGrafanaOrgMemberRole-random-id 역할을 생성합니다. 이 역할 생성은 AWS CloudFormation StackSets와의 통합을 통해 수행됩니다.

이 역할에는 워크스페이스에서 사용하도록 선택한 각 AWS 데이터 소스에 대한 정책이 연결되어 있습니다. 이러한 데이터 정책의 콘텐츠는 단일 계정에 대한 서비스 관리형 권한 섹션을 참조하세요.

Amazon Managed Grafana는 조직의 관리 계정에서 AmazonGrafanaOrgAdminRole-random-id 역할을 생성합니다. 이 역할을 통해 Amazon Managed Grafana 워크스페이스 권한으로 조직의 다른 계정에 액세스할 수 있습니다. AWS 서비스 알림 채널 정책도 이 역할에 연결됩니다. 워크스페이스의 AWS 데이터 소스 메뉴를 사용하여 워크스페이스에서 액세스할 수 있는 각 계정의 데이터 소스를 빠르게 프로비저닝합니다.

이 모드를 사용하려면 AWS 조직에서 AWS CloudFormation Stacksets를 신뢰할 수 있는 서비스로 활성화해야 합니다. 자세한 내용은 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에 대한 정책의 ListDescribe 권한은 데이터 소스 검색 및 프로비저닝이 올바르게 작동하는 데만 필요합니다. 이러한 데이터 소스를 수동으로 설정하려는 경우에는 필요하지 않습니다.

교차 계정 액세스

111111111111 계정에서 워크스페이스가 생성되면 1111111111111 계정에서 역할을 제공해야 합니다. 이 예제에서는 이 역할 WorkspaceRole이라고 합니다. 999999999999 계정의 데이터에 액세스하려면 999999999999 계정에서 역할을 생성해야 합니다. DataSourceRole이라고 합니다. 그런 다음, WorkspaceRoleDataSourceRole 사이에서 신뢰 관계를 설정해야 합니다. IAM 역할에 대한 자세한 내용은 자습서: IAM 역할을 사용한 AWS 계정 간 액세스 권한 위임을 참조하세요.

DataSourceRole에는 사용하려는 각 데이터 소스에 대해 이 섹션의 앞부분에 나열된 정책 문이 포함되어야 합니다. 신뢰 관계가 설정되면 워크스페이스에 있는 모든 AWS의 데이터 소스 구성 페이지에서 수임 역할 ARNDataSourceRole ARN(arn:aws:iam::999999999999:role:DataSourceRole)을 지정할 수 있습니다. 그런 다음, 데이터 소스는 DataSourceRole에 정의된 권한을 사용하여 999999999999 계정에 액세스합니다.