성능 개선 도우미에 대한 세분화된 액세스 권한 부여
세분화된 액세스 제어를 사용하면 추가적인 방법으로 성능 개선 도우미에 대한 액세스를 제어할 수 있습니다. 이 액세스 제어는 GetResourceMetrics
, DescribeDimensionKeys
및 GetDimensionKeyDetails
성능 개선 도우미 작업의 개별 차원에 대한 액세스를 허용하거나 거부할 수 있습니다. 세분화된 액세스를 사용하려면 조건 키를 사용하여 IAM 정책에서 차원을 지정하세요. 액세스 평가는 IAM 정책 평가 로직을 따릅니다. 자세한 내용은 IAM 사용 설명서의 정책 평가 로직을 참조하세요. IAM 정책 문에 차원이 지정되지 않은 경우 해당 문은 지정된 작업의 모든 차원에 대한 액세스를 제어합니다. 사용 가능한 차원 목록은 DimensionGroup 섹션을 참조하세요.
자격 증명에 액세스 권한이 부여된 차원을 확인하려면 ListAvailableResourceDimensions
에서 AuthorizedActions
파라미터를 사용하고 작업을 지정하세요. AuthorizedActions
에 허용되는 값은 다음과 같습니다.
-
GetResourceMetrics
-
DescribeDimensionKeys
-
GetDimensionKeyDetails
예를 들어 AuthorizedActions
파라미터에 GetResourceMetrics
를 지정하면 ListAvailableResourceDimensions
는 GetResourceMetrics
작업에 액세스 권한이 부여된 차원 목록이 반환됩니다. AuthorizedActions
파라미터에 여러 작업을 지정하는 경우 ListAvailableResourceDimensions
는 해당 작업에 액세스 권한이 부여된 차원의 교차 항목을 반환합니다.
다음 예시에서는 GetResourceMetrics
및 DescribeDimensionKeys
작업에 지정된 차원에 대한 액세스를 제공합니다.
{ "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" } ] }, ... ] } ] }