Performance Insights에 대한 액세스 정책 구성 - Amazon Relational Database Service

Performance Insights에 대한 액세스 정책 구성

성능 개선 도우미에 액세스하려면 보안 주체에게 AWS Identity and Access Management(IAM)의 적절한 권한이 있어야 합니다. 다음과 같은 방법으로 액세스를 부여할 수 있습니다.

  • AmazonRDSPerformanceInsightsReadOnly 관리형 정책을 권한 세트 또는 역할에 연결하여 성능 개선 도우미 API의 모든 읽기 전용 작업에 액세스할 수 있습니다.

  • AmazonRDSPerformanceInsightsFullAccess 관리형 정책을 권한 세트 또는 역할에 연결하여 성능 개선 도우미 API의 모든 작업에 액세스할 수 있습니다.

  • 사용자 지정 IAM 정책을 생성하고 권한 세트 또는 역할에 연결합니다.

성능 개선 도우미를 활성화할 때 고객 관리형 키를 지정한 경우 계정의 사용자에게 KMS 키에 대한 kms:Decryptkms:GenerateDataKey 권한이 있는지 확인합니다.

IAM 보안 주체에 AmazonRDSPerformanceInsightsReadOnly 정책 연결

AmazonRDSPerformanceInsightsReadOnly는 Amazon RDS 성능 개선 도우미 API의 모든 읽기 전용 작업에 대한 액세스 권한을 부여하는 AWS 관리형 정책입니다.

AmazonRDSPerformanceInsightsReadOnly를 권한 세트 또는 역할에 연결하면 수신자는 성능 개선 도우미를 다른 콘솔 기능과 함께 사용할 수 있습니다.

자세한 내용은 AWS 관리형 정책: AmazonRDSPerformanceInsightsReadOnly 섹션을 참조하세요.

IAM 보안 주체에 AmazonRDSPerformanceInsightsFullAccess 정책 연결

AmazonRDSPerformanceInsightsFullAccess는 Amazon RDS 성능 개선 도우미 API의 모든 작업에 대한 액세스 권한을 부여하는 AWS 관리형 정책입니다.

AmazonRDSPerformanceInsightsFullAccess를 권한 세트 또는 역할에 연결하면 수신자는 성능 개선 도우미를 다른 콘솔 기능과 함께 사용할 수 있습니다.

자세한 내용은 AWS 관리형 정책: AmazonRDSPerformanceInsightsFullAccess 섹션을 참조하세요.

Performance Insights를 위한 사용자 지정 IAM 정책 만들기

AmazonRDSPerformanceInsightsReadOnly 또는 AmazonRDSPerformanceInsightsFullAccess 정책이 없는 사용자의 경우, 사용자 관리형 IAM 정책을 생성 또는 수정하여 성능 개선 도우미에 대한 액세스 권한을 부여할 수 있습니다. IAM 권한 세트 또는 역할에 이 정책을 연결하면 수신자가 성능 개선 도우미를 사용할 수 있습니다.

사용자 지정 정책을 생성하는 방법
  1. https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

  2. 탐색 창에서 정책을 선택합니다.

  3. [Create policy]를 선택합니다.

  4. [Create Policy] 페이지에서 JSON 탭을 선택합니다.

  5. AmazonRDSPerformanceInsightsReadOnly 또는 AmazonRDSPerformanceInsightsFullAccess 정책에 대한 AWS 관리형 정책 참조 가이드의 JSON 정책 문서 섹션에 제공된 텍스트를 복사하여 붙여넣습니다.

  6. Review policy(정책 검토)를 선택합니다.

  7. 정책의 이름과 설명(선택 사항)을 지정한 다음 [Create policy]를 선택합니다.

이제 정책을 권한 세트 또는 역할에 연결할 수 있습니다. 다음 절차에서는 이 목적으로 사용할 수 있는 사용자가 이미 있다고 가정합니다.

사용자에게 정책을 연결
  1. https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

  2. 탐색 창에서 사용자를 선택합니다.

  3. 목록에서 기존 사용자를 선택합니다.

    중요

    성능 개선 도우미를 사용하려면 사용자 지정 정책 외에 Amazon RDS에 대한 액세스 권한이 있어야 합니다. 예를 들어 AmazonRDSPerformanceInsightsReadOnly 사전 정의 정책은 Amazon RDS에 대한 읽기 전용 액세스를 제공합니다. 자세한 내용은 정책을 사용하여 액세스 관리 섹션을 참조하세요.

  4. [Summary] 페이지에서 [Add permissions]를 선택합니다.

  5. [Attach existing policies directly]를 선택합니다. [Search]에 다음과 같이 정책 이름의 첫 문자 몇 개를 입력합니다.

    정책 선택
  6. 정책을 선택하고 [Next: Review]를 선택합니다.

  7. [Add permissions]를 선택합니다.

성능 개선 도우미를 위한 AWS KMS 정책 구성

성능 개선 도우미는 AWS KMS key을(를) 사용하여 민감한 데이터를 암호화합니다. API 또는 콘솔을 통해 성능 개선 도우미를 활성화하면 다음 중 한 가지를 수행할 수 있습니다.

  • 기본 AWS 관리형 키를 선택합니다.

    Amazon RDS는 새 DB 인스턴스에 대해 AWS 관리형 키을(를) 사용합니다. Amazon RDS는 AWS 계정에 대해 AWS 관리형 키를 생성합니다. AWS 계정에 각 AWS 리전의 Amazon RDS에 대해 각기 다른 AWS 관리형 키가 있습니다.

  • 고객 관리형 키를 선택합니다.

    고객 관리형 키를 지정하는 경우 성능 개선 도우미 API를 호출하는 계정의 사용자는 KMS 키에 대한 kms:Decryptkms:GenerateDataKey 권한이 필요합니다. IAM 정책을 통해 이러한 권한을 구성할 수 있습니다. 그러나 KMS 키 정책을 통해 이러한 권한을 관리하는 것이 좋습니다. 자세한 내용은 AWS KMS에서 키 정책 사용을 참조하세요.

다음 예는 KMS 키 정책에 문을 추가하는 방법을 보여줍니다. 이러한 문을 통해 Performance Insights에 액세스할 수 있습니다. KMS 키를 사용하는 방법에 따라 일부 제한 사항을 변경할 수 있습니다. 정책에 문을 추가하기 전에 모든 문을 제거하세요.

{ "Version" : "2012-10-17", "Id" : "your-policy", "Statement" : [ { //This represents a statement that currently exists in your policy. } ...., //Starting here, add new statement to your policy for Performance Insights. //We recommend that you add one new statement for every RDS instance { "Sid" : "Allow viewing RDS Performance Insights", "Effect": "Allow", "Principal": { "AWS": [ //One or more principals allowed to access Performance Insights "arn:aws:iam::444455556666:role/Role1" ] }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition" : { "StringEquals" : { //Restrict access to only RDS APIs (including Performance Insights). //Replace region with your AWS Region. //For example, specify us-west-2. "kms:ViaService" : "rds.region.amazonaws.com" }, "ForAnyValue:StringEquals": { //Restrict access to only data encrypted by Performance Insights. "kms:EncryptionContext:aws:pi:service": "rds", "kms:EncryptionContext:service": "pi", //Restrict access to a specific RDS instance. //The value is a DbiResourceId. "kms:EncryptionContext:aws:rds:db-id": "db-AAAAABBBBBCCCCDDDDDEEEEE" } } }

성능 개선 도우미에서 AWS KMS 고객 관리형 키를 사용하는 방법

성능 개선 도우미는 고객 관리형 키를 사용하여 민감한 데이터를 암호화합니다. 성능 개선 도우미를 켜면 API를 통해 AWS KMS 키를 입력할 수 있습니다. 성능 개선 도우미는 이 키에 대한 KMS 권한을 생성합니다. 여기서는 키를 사용하고 민감한 데이터를 처리하는 데 필요한 작업을 수행합니다. 민감한 데이터에는 사용자, 데이터베이스, 애플리케이션, SQL 쿼리 텍스트 등의 필드가 포함됩니다. 성능 개선 도우미는 저장된 데이터와 전송 중인 데이터 모두에서 데이터가 암호화된 상태로 유지되도록 합니다.

성능 개선 도우미 IAM가 AWS KMS와 작동하는 방식

IAM은 특정 API에 권한을 부여합니다. 성능 개선 도우미에는 IAM 정책을 사용하여 제한할 수 있는 다음과 같은 공개 API가 포함됩니다.

  • DescribeDimensionKeys

  • GetDimensionKeyDetails

  • GetResourceMetadata

  • GetResourceMetrics

  • ListAvailableResourceDimensions

  • ListAvailableResourceMetrics

다음 API 요청을 사용하여 민감한 데이터를 가져올 수 있습니다.

  • DescribeDimensionKeys

  • GetDimensionKeyDetails

  • GetResourceMetrics

API를 사용하여 민감한 데이터를 가져오는 경우 성능 개선 도우미는 호출자의 보안 인증 정보를 활용합니다. 이 확인을 통해 민감한 데이터에 대한 액세스가 KMS 키에 액세스할 수 있는 사용자로 제한됩니다.

이러한 API를 호출하려면 IAM 정책을 통해 API를 호출할 수 있는 권한과 AWS KMS 키 정책을 통해 kms:decrypt 작업을 직접적으로 호출할 수 있는 권한이 있어야 합니다.

GetResourceMetrics API는 민감한 데이터와 그렇지 않은 데이터를 모두 반환할 수 있습니다. 요청 파라미터로는 응답에 민감한 데이터를 포함해야 하는지 여부를 결정합니다. 요청 시 필터 또는 그룹별 파라미터에 민감한 차원이 포함된 경우 API는 민감한 데이터를 반환합니다.

GetResourceMetrics API와 함께 사용할 수 있는 차원에 관한 자세한 내용은 DimensionGroup을 참조하세요.

예시

다음 예시에서는 다음 db.user 그룹에서 민감한 데이터를 요청합니다.

POST / HTTP/1.1 Host: <Hostname> Accept-Encoding: identity X-Amz-Target: PerformanceInsightsv20180227.GetResourceMetrics Content-Type: application/x-amz-json-1.1 User-Agent: <UserAgentString> X-Amz-Date: <Date> Authorization: AWS4-HMAC-SHA256 Credential=<Credential>, SignedHeaders=<Headers>, Signature=<Signature> Content-Length: <PayloadSizeBytes> { "ServiceType": "RDS", "Identifier": "db-ABC1DEFGHIJKL2MNOPQRSTUV3W", "MetricQueries": [ { "Metric": "db.load.avg", "GroupBy": { "Group": "db.user", "Limit": 2 } } ], "StartTime": 1693872000, "EndTime": 1694044800, "PeriodInSeconds": 86400 }

다음 예시에서는 다음 db.load.avg 지표에서 민감하지 않은 데이터를 요청합니다.

POST / HTTP/1.1 Host: <Hostname> Accept-Encoding: identity X-Amz-Target: PerformanceInsightsv20180227.GetResourceMetrics Content-Type: application/x-amz-json-1.1 User-Agent: <UserAgentString> X-Amz-Date: <Date> Authorization: AWS4-HMAC-SHA256 Credential=<Credential>, SignedHeaders=<Headers>, Signature=<Signature> Content-Length: <PayloadSizeBytes> { "ServiceType": "RDS", "Identifier": "db-ABC1DEFGHIJKL2MNOPQRSTUV3W", "MetricQueries": [ { "Metric": "db.load.avg" } ], "StartTime": 1693872000, "EndTime": 1694044800, "PeriodInSeconds": 86400 }