성능 개선 도우미에 대한 세분화된 액세스 권한 부여 - Amazon Relational Database Service

성능 개선 도우미에 대한 세분화된 액세스 권한 부여

세분화된 액세스 제어를 사용하면 추가적인 방법으로 성능 개선 도우미에 대한 액세스를 제어할 수 있습니다. 이 액세스 제어는 GetResourceMetrics, DescribeDimensionKeysGetDimensionKeyDetails 성능 개선 도우미 작업의 개별 차원에 대한 액세스를 허용하거나 거부할 수 있습니다. 세분화된 액세스를 사용하려면 조건 키를 사용하여 IAM 정책에서 차원을 지정하세요. 액세스 평가는 IAM 정책 평가 로직을 따릅니다. 자세한 내용은 IAM 사용 설명서의 정책 평가 로직을 참조하세요. IAM 정책 문에 차원이 지정되지 않은 경우 해당 문은 지정된 작업의 모든 차원에 대한 액세스를 제어합니다. 사용 가능한 차원 목록은 DimensionGroup 섹션을 참조하세요.

자격 증명에 액세스 권한이 부여된 차원을 확인하려면 ListAvailableResourceDimensions에서 AuthorizedActions 파라미터를 사용하고 작업을 지정하세요. AuthorizedActions에 허용되는 값은 다음과 같습니다.

  • GetResourceMetrics

  • DescribeDimensionKeys

  • GetDimensionKeyDetails

예를 들어 AuthorizedActions 파라미터에 GetResourceMetrics를 지정하면 ListAvailableResourceDimensionsGetResourceMetrics 작업에 액세스 권한이 부여된 차원 목록이 반환됩니다. AuthorizedActions 파라미터에 여러 작업을 지정하는 경우 ListAvailableResourceDimensions는 해당 작업에 액세스 권한이 부여된 차원의 교차 항목을 반환합니다.

다음 예시에서는 GetResourceMetricsDescribeDimensionKeys 작업에 지정된 차원에 대한 액세스를 제공합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowToDiscoverDimensions", "Effect": "Allow", "Action": [ "pi:ListAvailableResourceDimensions" ], "Resource": [ "arn:aws:pi:us-east-1:123456789012:metrics/rds/db-ABC1DEFGHIJKL2MNOPQRSTUV3W" ] }, { "Sid": "SingleAllow", "Effect": "Allow", "Action": [ "pi:GetResourceMetrics", "pi:DescribeDimensionKeys" ], "Resource": [ "arn:aws:pi:us-east-1:123456789012:metrics/rds/db-ABC1DEFGHIJKL2MNOPQRSTUV3W" ], "Condition": { "ForAllValues:StringEquals": { // only these dimensions are allowed. Dimensions not included in // a policy with "Allow" effect will be denied "pi:Dimensions": [ "db.sql_tokenized.id", "db.sql_tokenized.statement" ] } } } ] }

요청된 차원에 대한 응답은 다음과 같습니다.

// ListAvailableResourceDimensions API // Request { "ServiceType": "RDS", "Identifier": "db-ABC1DEFGHIJKL2MNOPQRSTUV3W", "Metrics": [ "db.load" ], "AuthorizedActions": ["DescribeDimensionKeys"] } // Response { "MetricDimensions": [ { "Metric": "db.load", "Groups": [ { "Group": "db.sql_tokenized", "Dimensions": [ { "Identifier": "db.sql_tokenized.id" }, // { "Identifier": "db.sql_tokenized.db_id" }, // not included because not allows in the IAM Policy { "Identifier": "db.sql_tokenized.statement" } ] } ] } ] }

다음 예시에서는 차원에 대해 액세스 허용 1개와 거부 액세스 거부 2개를 지정합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowToDiscoverDimensions", "Effect": "Allow", "Action": [ "pi:ListAvailableResourceDimensions" ], "Resource": [ "arn:aws:pi:us-east-1:123456789012:metrics/rds/db-ABC1DEFGHIJKL2MNOPQRSTUV3W" ] }, { "Sid": "O01AllowAllWithoutSpecifyingDimensions", "Effect": "Allow", "Action": [ "pi:GetResourceMetrics", "pi:DescribeDimensionKeys" ], "Resource": [ "arn:aws:pi:us-east-1:123456789012:metrics/rds/db-ABC1DEFGHIJKL2MNOPQRSTUV3W" ] }, { "Sid": "O01DenyAppDimensionForAll", "Effect": "Deny", "Action": [ "pi:GetResourceMetrics", "pi:DescribeDimensionKeys" ], "Resource": [ "arn:aws:pi:us-east-1:123456789012:metrics/rds/db-ABC1DEFGHIJKL2MNOPQRSTUV3W" ], "Condition": { "ForAnyValue:StringEquals": { "pi:Dimensions": [ "db.application.name" ] } } }, { "Sid": "O01DenySQLForGetResourceMetrics", "Effect": "Deny", "Action": [ "pi:GetResourceMetrics" ], "Resource": [ "arn:aws:pi:us-east-1:123456789012:metrics/rds/db-ABC1DEFGHIJKL2MNOPQRSTUV3W" ], "Condition": { "ForAnyValue:StringEquals": { "pi:Dimensions": [ "db.sql_tokenized.statement" ] } } } ] }

요청된 차원에 대한 응답은 다음과 같습니다.

// ListAvailableResourceDimensions API // Request { "ServiceType": "RDS", "Identifier": "db-ABC1DEFGHIJKL2MNOPQRSTUV3W", "Metrics": [ "db.load" ], "AuthorizedActions": ["GetResourceMetrics"] } // Response { "MetricDimensions": [ { "Metric": "db.load", "Groups": [ { "Group": "db.application", "Dimensions": [ // removed from response because denied by the IAM Policy // { "Identifier": "db.application.name" } ] }, { "Group": "db.sql_tokenized", "Dimensions": [ { "Identifier": "db.sql_tokenized.id" }, { "Identifier": "db.sql_tokenized.db_id" }, // removed from response because denied by the IAM Policy // { "Identifier": "db.sql_tokenized.statement" } ] }, ... ] } ] }
// ListAvailableResourceDimensions API // Request { "ServiceType": "RDS", "Identifier": "db-ABC1DEFGHIJKL2MNOPQRSTUV3W", "Metrics": [ "db.load" ], "AuthorizedActions": ["DescribeDimensionKeys"] } // Response { "MetricDimensions": [ { "Metric": "db.load", "Groups": [ { "Group": "db.application", "Dimensions": [ // removed from response because denied by the IAM Policy // { "Identifier": "db.application.name" } ] }, { "Group": "db.sql_tokenized", "Dimensions": [ { "Identifier": "db.sql_tokenized.id" }, { "Identifier": "db.sql_tokenized.db_id" }, // allowed for DescribeDimensionKeys because our IAM Policy // denies it only for GetResourceMetrics { "Identifier": "db.sql_tokenized.statement" } ] }, ... ] } ] }