조건 키 사용
IAM 정책이 적용되는 방식을 결정하는 조건을 지정할 수 있습니다. ElastiCache에서 JSON 정책의 Condition
요소를 사용하여 요청 컨텍스트의 키를 정책에서 지정한 키 값과 비교할 수 있습니다. 자세한 정보는 IAM JSON 정책 요소: 조건을 참조하세요. 글로벌 조건 키의 목록은 AWS 글로벌 조건 컨텍스트 키를 참조하세요.
조건 지정: 조건 키 사용
세분화된 제어를 구현하려면 특정 요청에 대한 개별 파라미터 집합을 제어하는 조건을 지정하는 IAM 권한 정책을 작성합니다. 그런 다음 IAM 콘솔을 사용하여 만드는 IAM 사용자, 그룹 또는 역할에 정책을 적용합니다.
조건을 적용하려면 IAM 정책 설명에 조건 정보를 추가합니다. 다음 예에서는 생성된 모든 캐시 클러스터가 cache.r5.large
노드 유형이 되도록 조건을 지정합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster" ], "Resource": [ "arn:aws:elasticache:*:*:cluster:*" ], "Condition": { "StringEquals": { "elasticache:CacheNodeType": [ "cache.r5.large" ] } } } ] }
다음 표는 ElastiCache에 적용되는 서비스별 조건 키와 이러한 조건 키를 사용하는 작업을 보여 줍니다.
키 이름입니다. | 설명 | 데이터 형식 | 사용처 | 영향을 받는 리소스 유형(* 별표가 표시되어 있으면 요청에 있는 경우에만 리소스가 영향을 받습니다.) |
---|---|---|---|---|
elasticache:CacheNodeType |
요청에 있는 cacheNodeType 파라미터로 액세스를 필터링합니다. 이 키는 클러스터 생성 또는 조정 작업에 사용할 수 있는 캐시 노드 유형을 제한하는 데 사용할 수 있습니다. |
String |
|
|
|
| |||
elasticache:EngineVersion |
생성 또는 클러스터 수정 요청에 있는 |
String |
|
|
|
| |||
elasticache:EngineType |
생성 요청에 있는 엔진 유형으로 액세스를 필터링합니다. 복제 그룹 생성에서 파라미터가 없는 경우 기본 엔진 "redis"가 키로 사용됩니다. |
String |
|
|
elasticache:AuthTokenEnabled |
요청의 |
Bool |
|
|
|
| |||
elasticache:CacheParameterGroupName |
요청의 |
String |
|
|
|
| |||
|
| |||
|
| |||
|
| |||
|
|
자세한 내용은 태그 기반 액세스 제어 정책 예제 섹션을 참조하세요.
정책 조건 연산자 사용에 대한 자세한 내용은 ElastiCache API 권한: 작업, 리소스 및 조건 참조 섹션을 참조하세요.
정책 예: 조건을 사용하여 세부적인 파라미터 제어 구현
이 섹션에서는 이전에 나열된 ElastiCache 파라미터에 대한 세분적인 액세스 제어를 구현하기 위한 정책 예를 보여 줍니다.
elasticache:CacheNodeType: 사용자가 생성할 수 있는 NodeType을 지정합니다. 제공된 조건을 사용하여 고객은 노드 유형에 대해 단일 또는 범위 값을 지정할 수 있습니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster" "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:cluster:*" "arn:aws:elasticache:*:*:replicationgroup:*" ], "Condition": { "StringEquals": { "elasticache:CacheNodeType": [ "cache.t2.micro", "cache.t2.medium" ] } } } ] }
elasticache:EngineVersion: 엔진 버전 1.6.6의 사용을 지정합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster" "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:cluster:*" "arn:aws:elasticache:*:*:replicationgroup:*" ], "Condition": { "StringEquals": { "elasticache:EngineVersion": "1.6.6" } } } ] }
elasticache:CacheParameterGroupName: 클러스터에서 조직의 특정 파라미터가 있는 기본값이 아닌 파라미터 그룹을 지정합니다. 파라미터 그룹에 대한 이름 지정 패턴을 지정하거나 특정 파라미터 그룹 이름에 대한 블록 삭제를 지정할 수도 있습니다. 다음은 "my-org-param-group"의 사용을 제한하는 예입니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateReplicationGroup" ], "Resource": [ "arn:aws:elasticache:*:*:cluster:*" ], "Condition": { "StringEquals": { "elasticache:CacheParameterGroupName": "my-org-param-group" } } } ] }
-
elasticache:CreateCacheCluster: 요청 태그
CreateCacheCluster
가 누락되었거나Project
,Dev
또는QA
와 같지 않은 경우Prod
작업은 거부됩니다.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*", "arn:aws:elasticache:*:*:securitygroup:*", "arn:aws:elasticache:*:*:replicationgroup:*" ] }, { "Effect": "Deny", "Action": [ "elasticache:CreateCacheCluster" ], "Resource": [ "arn:aws:elasticache:*:*:cluster:*" ], "Condition": { "Null": { "aws:RequestTag/Project": "true" } } }, { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster", "elasticache:AddTagsToResource" ], "Resource": "arn:aws:elasticache:*:*:cluster:*", "Condition": { "StringEquals": { "aws:RequestTag/Project": [ "Dev", "Prod", "QA" ] } } } ] }
elasticache:createcachecluster:
cacheNodeType
cache.r5.large 또는 cache.r6g.4xlarge 및Project=XYZ
태그를 사용하여CreateCacheCluster
를 허용합니다.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*" ] }, { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster" ], "Resource": [ "arn:aws:elasticache:*:*:cluster:*" ], "Condition": { "StringEqualsIfExists": { "elasticache:CacheNodeType": [ "cache.r5.large", "cache.r6g.4xlarge" ] }, "StringEquals": { "aws:RequestTag/Project": "XYZ" } } } ] }
참고
태그와 다른 조건 키를 함께 적용하기 위한 정책을 생성할 때 --tags
파라미터가 있는 생성 요청청에 대한 별도의 elasticache:AddTagsToResource
정책 요구 사항으로 인해 조건 키 요소에서 조건부 IfExists
가 필요할 수 있습니다.