JSON 작성 가이드
정책은 자격 증명 기반 정책과 리소스 기반 정책으로 구분됩니다.
- 자격 증명 기반 정책: 사용자, 그룹, 역할 등 액션을 수행하는 주체(Principal)에 부여되는 정책
- 리소스 기반 정책: 리소스에 부여되는 정책으로써 특정 자원(Resource)에 대한 행동(Action)을 주체(Principal)에 한하여 허용 또는 거부(Effect)하도록 결정하는 정책
리소스 기반 정책
리소스 기반 정책은 지정된 주체(요청자)에게 해당 리소스에 대한 특정 작업을 수행할 수 있도록 권한을 부여하는 정책입니다. 따라서 리소스 기반 정책은 리소스에 정책을 직접 부여하며 정책에 정의된 사용자만 정책을 수행할 수 있으며, 정책이 부여된 사용자가 보안 주체가 됩니다.
{
"Version": "2024-07-01",
"Statement": [
{
"Sid": "statement1",
"Action": ["object-store:UploadObject"],
"Principal": {
"scp":"srn:e::1234:::scp-iam:user/abc3d3442"
},
"Effect": "Allow",
"Resource": "srn:e:::::object-store:bucket/foo"
}
]
}{
"Version": "2024-07-01",
"Statement": [
{
"Sid": "statement1",
"Action": ["object-store:UploadObject"],
"Principal": {
"scp":"srn:e::1234:::scp-iam:user/abc3d3442"
},
"Effect": "Allow",
"Resource": "srn:e:::::object-store:bucket/foo"
}
]
}리소스 기반 정책 구조
리소스 기반 정책의 문법 구조와 항목별 설명은 다음과 같습니다.
{
"Version": "2024-07-01", # 정책 문법의 버전(2024-07-01로 고정)
"Statement": [
{
"Sid": "statement1", # 정책 요소 ID
"Effect": "Allow", # 정책 효과
"Action": ["iam:showUser"], # 정책에 정의되는 액션 내용
"Principal": {
"scp":"srn:e::1234:::iam:user/ROOT" # 정책의 대상이 되는 주체
}
"Resource": "srn:e::kr-west1:::scp-iam:group/foo", # 정책 액션이 허용되는 자원
"Condition": { # 정책 조건
"StringEquals": {
"iam:userName": [
"scp_test_user"
]
}
}
}
]
}{
"Version": "2024-07-01", # 정책 문법의 버전(2024-07-01로 고정)
"Statement": [
{
"Sid": "statement1", # 정책 요소 ID
"Effect": "Allow", # 정책 효과
"Action": ["iam:showUser"], # 정책에 정의되는 액션 내용
"Principal": {
"scp":"srn:e::1234:::iam:user/ROOT" # 정책의 대상이 되는 주체
}
"Resource": "srn:e::kr-west1:::scp-iam:group/foo", # 정책 액션이 허용되는 자원
"Condition": { # 정책 조건
"StringEquals": {
"iam:userName": [
"scp_test_user"
]
}
}
}
]
}| 항목 | 설명 | 필수여부 |
|---|---|---|
| Version |
| 필수 |
| Statement | 정책의 주요 요소 정보 | 필수 |
| Statement.Sid | 정책 요소 ID ( 동일한 정책 내 요소에 대한 고유 ID) | 선택 |
| Statement.Effect | 정책 적용 효과 ( Allow : 허용 / Deny : 거부 ) | 필수 |
| Statement.Principal | 보안 주체 | 필수 |
| Statement.Action | 정책 적용 대상 액션 (Action/NotAction 중 하나는 반드시 기술) | 선택 |
| Statement.Resource | 정책 판단 대상이 되는 자원 목록 | 필수 |
| Statement.Condition | 정책 판단 조건 정보 | 선택 |
Version
Version은 정책 버전과는 다른 의미로 사용되며 현재 버전은 “2024-07-01"입니다.
{
"Version" : "2024-07-01"
}
Statement
Statement는 정책의 주요 요소에 대한 정보로써 단일 요소 또는 개별 요소의 배열 형태로 정의할 수 있습니다.
"Statement" : [{statement}]
"Statement" : [{statement}, {statement}, {statement}]
OR로 정의됩니다.Statement.Effect
Statement.Effect는 정책 동작의 허용 여부를 정의합니다.
"Effect" : "Allow" # 허용
"Effect" : "Deny" # 거부
Statement.Principal
Statement.Principal은 리소스 기반 정책에서 리소스에 대한 엑세스가 허용되거나 거부되는 주체를 지정합니다.Principal 요소에서 지정할 수 있는 주체는 다음과 같습니다.
- 루트 사용자
- IAM 사용자
- IAM 역할
- 서비스 계정
- Principal은 하나 이상의 값을 가질 수 있으며, 하나 이상의 경우에는 배열로 작성하세요.
- Principal은 와일드 카드(*)를 사용할 수 없습니다.
"Principal" : { "scp": "srn:e::1234:::iam:user/root_user_id" }
"Principal" : {
"scp": [
"srn:e::1234:::iam:user/abc33333",
"srn:e::1234:::iam:user/kef12344"
]
}
"Principal": {
"Service": [
"apigateway.samsungsdscloud.com"
]
}
Statement.Action
Statement.Action은 정책 검사에 평가될 액션을 정의합니다.
- 대소문자를 구분하여 작성하세요.
- 액션은 action definition에 정의되어 있는 액션 이름의 형식대로 작성하세요.
"Action" : ["{action_expression}"] # 단일 액션
"Action" : ["{action_expression}", "{action_expression}", ... ] # 다수 액션
Statement.Resource
Statement.Resource는 정책이 적용되는 특정 리소스 또는 리소스 집합을 지정하는 SRN을 정의합니다.
- 대소문자를 구분하여 작성하세요.
resource_expression은 와일드 카드("*") 또는 SRN 형식으로 작성하세요.
- 리소스 기반 정책이 부여된 자원의 SRN이 반드시 포함되어야 하며, 해당 자원의 하위 자원이 있는 경우에는 하위 자원을 포함하여 작성할 수 있습니다.
- 정책에 정의된 액션 정의(Action definition)에 기술된 자원에 한하여 Resources에 작성할 수 있으며, 정의되지 않은 자원의 경우에는 정책 평가 시 무시됩니다.
- 하위 자원에도 와일드 카드(*)를 사용할 수 있습니다.
"Resource" : ["{resource_expression}"] # 단일 자원
"Resource" : ["{resource_expression}", "{resource_expression}", ... ] # 다수 자원
resource_expression에선 SRN 각 요소에서도 wildcard 형태로 표시할 수 있으며, 요소의 종류에 따라 지원 형태가 달라집니다.
- wildcard 미지원 SRN 요소 SRN 요소 중 offering, account_id, service-type은 wildcard를 지원하지 않습니다.
"Resource" : ["srn:*::9b7653f6f47a42e38055934a0575a813:kr-west1::scp-compute:instance/d12937a6db0940499fdb0e18ad57b101"] # offering wildcard 표기 (X)
"Resource" : ["srn:e::*:kr-west1::scp-compute:instance/d12937a6db0940499fdb0e18ad57b101"] # account wildcard 표기 (X)
"Resource" : ["srn:e::9b7653f6f47a42e38055934a0575a813:kr-west1::*:instance/d12937a6db0940499fdb0e18ad57b101"] # service type 표기 (X)
- wildcard 지원 SRN 요소
- SRN 요소 중 resource-type, resource-identifier, region은 전체 또는 부분에 대한 wildcard를 지원합니다.
- 부분 wildcard의 경우에는 “foo , foo*, foo, fo” 와 같은 표현식으로 작성 할 수 있습니다.
# region
"Resource" : ["srn:e::9b7653f6f47a42e38055934a0575a813:*::scp-compute:instance/d12937a6db0940499fdb0e18ad57b101"] # 전체 (O)
"Resource" : ["srn:e::9b7653f6f47a42e38055934a0575a813:kr-*::scp-compute:instance/d12937a6db0940499fdb0e18ad57b101"] # 부분 (O)
# resource-type
"Resource" : ["srn:e::9b7653f6f47a42e38055934a0575a813:kr-west1::scp-compute:*/d12937a6db0940499fdb0e18ad57b101"] # 전체 (O)
"Resource" : ["srn:e::9b7653f6f47a42e38055934a0575a813:kr-west1::scp-compute:ins*/d12937a6db0940499fdb0e18ad57b101"] # 부분 (O)
# resource-identifier
"Resource" : ["srn:e::9b7653f6f47a42e38055934a0575a813:kr-west1::scp-compute:instance/*"] # 전체 (O)
"Resource" : ["srn:e::9b7653f6f47a42e38055934a0575a813:kr-west1::scp-compute:instance/d12*101"] # 부분 (O)
단일 자원일 경우, user 조회에 대한 action_definition resources 정의 형태
kind: scp-iam:action-definition
service: iam
paths:
/v1/users/{user_id}:
get:
resources:
- "iam:user":
resource_id: "path['user_id']" # 사용자 조회 액션에서 지원되는 자원의 범위kind: scp-iam:action-definition
service: iam
paths:
/v1/users/{user_id}:
get:
resources:
- "iam:user":
resource_id: "path['user_id']" # 사용자 조회 액션에서 지원되는 자원의 범위{
"Version": "2024-07-01",
"Statement": [
{
"Sid": "statement1",
"Action": ["iam:showUser"],
"Effect": "Allow",
"Resource": [
"*", # 전체 자원에 대한 표현,
"srn:e:::::scp-iam:user/94c2ae8e7d5d471683a6135446183a12", # 특정 사용자 자원에 대한 표현
"srn:e:::::scp-iam:policy/c23fb561c689455993874fa5d5ed4a2f" # 특정 정책 자원에 대한 표현 -> 사용자 조회 액션에서 해당 자원을 기술 할 경우 작성된 내용은 정책 평가 시 무시 된다.
]
}
]
}{
"Version": "2024-07-01",
"Statement": [
{
"Sid": "statement1",
"Action": ["iam:showUser"],
"Effect": "Allow",
"Resource": [
"*", # 전체 자원에 대한 표현,
"srn:e:::::scp-iam:user/94c2ae8e7d5d471683a6135446183a12", # 특정 사용자 자원에 대한 표현
"srn:e:::::scp-iam:policy/c23fb561c689455993874fa5d5ed4a2f" # 특정 정책 자원에 대한 표현 -> 사용자 조회 액션에서 해당 자원을 기술 할 경우 작성된 내용은 정책 평가 시 무시 된다.
]
}
]
}여러 자원일 경우, user 정책 조회에 대한 action_definition resources 정의 형태
서로 다른 여러 자원을 정의할 경우, 정책에 작성된 자원 유형을 정의하세요.
- 정책 판단 시 액션 정의 파일에 정의된 자원을 기준으로 정책에 작성된 내용이 조건에 만족한 경우에만 성공으로 판단합니다.
- 액션 정의 파일에 정의된 모든 자원이 정책에 작성되어 있지 않은 경우, 정책 조건에 맞지 않음으로 판단합니다.
kind: scp-iam:action-definition
service: iam
paths:
/v1/user/{user_id}/policy/{policy_id}
get:
resources:
- "iam:user":
resource_id : "path['user_id']"
- "iam:policy":
resource_id : "path['policy_id']"
- 정상: 특정 사용자의 특정 policy 예시
{
"Version": "2024-07-01",
"Statement": [
{
"Sid": "statement1",
"Action": ["iam:ShowUserPolicy"],
"Effect": "Allow",
"Resource": [
"srn:e:::::iam:user/94c2ae8e7d5d471683a6135446183a12", # 특정 사용자 자원에 대한 표현
"srn:e:::::iam:policy/c23fb561c689455993874fa5d5ed4a2f" # 특정 정책 자원에 대한 표현
]
}
]
}{
"Version": "2024-07-01",
"Statement": [
{
"Sid": "statement1",
"Action": ["iam:ShowUserPolicy"],
"Effect": "Allow",
"Resource": [
"srn:e:::::iam:user/94c2ae8e7d5d471683a6135446183a12", # 특정 사용자 자원에 대한 표현
"srn:e:::::iam:policy/c23fb561c689455993874fa5d5ed4a2f" # 특정 정책 자원에 대한 표현
]
}
]
}정상: 모든 사용자의 특정 policy 예시
배경색 변경{ "Version": "2024-07-01", "Statement": [ { "Sid": "statement1", "Action": ["iam:ShowUserPolicy"], "Effect": "Allow", "Resource": [ "srn:e:::::iam:user/*", # 모든 사용자 자원에 대한 표현 "srn:e:::::iam:policy/c23fb561c689455993874fa5d5ed4a2f" # 특정 정책 자원에 대한 표현 ] } ] }{ "Version": "2024-07-01", "Statement": [ { "Sid": "statement1", "Action": ["iam:ShowUserPolicy"], "Effect": "Allow", "Resource": [ "srn:e:::::iam:user/*", # 모든 사용자 자원에 대한 표현 "srn:e:::::iam:policy/c23fb561c689455993874fa5d5ed4a2f" # 특정 정책 자원에 대한 표현 ] } ] }정상: 모든 사용자의 특정 policy 예시 비정상: user 자원 미기술 예시
배경색 변경{ "Version": "2024-07-01", "Statement": [ { "Sid": "statement1", "Action": ["iam:ShowUserPolicy"], "Effect": "Allow", "Resource": [ "srn:e:::::iam:policy/c23fb561c689455993874fa5d5ed4a2f" # 특정 정책 자원에 대한 표현 ] } ] }{ "Version": "2024-07-01", "Statement": [ { "Sid": "statement1", "Action": ["iam:ShowUserPolicy"], "Effect": "Allow", "Resource": [ "srn:e:::::iam:policy/c23fb561c689455993874fa5d5ed4a2f" # 특정 정책 자원에 대한 표현 ] } ] }비정상: user 자원 미기술 예시
Statement.Condition
Statement.Condition은 정책 내에서 정책이 적용될 특정 대상에 대한 적용 조건을 정의합니다.
- 대소문자를 구분하여 작성하세요.
- 조건 연산자를 사용하여 정책에 정의된 자원의 속성 조건 키(또는 글로벌 조건 키), 값이 실제 요청(또는 자원의 속성)값과 비교하기 위한 조건 표현식을 작성하세요.
"Condition" : {
"{qualifier:}{operator}" : {
"{condition-key}" : ["{condition-value}"],
"{condition-key2}" : ["{condition-value}"]
}
}
| 항목 | 필수 여부 | 대소문자 구분 | 설명 |
|---|---|---|---|
| operator | 필수 | O | 조건 연산자
|
| condition-key | 필수 | X | 정책 조건 키(글로벌 조건 키, 자원 속성 조건 키)
|
| condition-value | 필수 | 연산자에 따라 다름 | 정책 조건값 |
| qualifier | 선택 | O |
|
동일한 Condition Operator의 Condition Key에 Value가 2개 이상 정의된 경우, Value간 판단은 OR로 동작합니다. 단, Operator가 부정 연산자(Negative Operator) 유형인 경우에는 연산이 OR가 아닌 NOR로 동작합니다.
- 긍정 연산자(Positive Operator) 유형 및 예시(userName이 “foo” 또는 “bar"이고 company가 “Samsung"인 경우)
"Condition": {
"StringEquals": {
"iam:userName": [ # User의 이름이 foo 또는 bar인 경우
"foo", "bar"
],
"iam:userCompany": [ # User의 회사가 Samsung인 경우
"Samsung"
]
}
}
- 부정 연산자(Negative Operator) 유형 및 예시(IP가 1.1.1.1/24 와 2.2.2.2/24가 대역이 아닌 모든 IP)
"Condition": {
"NotIpAddress": {
"scp:SourceIp": [ # 요청 IP가 1.1.1.1, 2.2.2.2 모두 아닌 경우
"1.1.1.1/24", "2.2.2.2/24"
]
}
}
조건 연산자(operator)
조건 연산자는 7가지(문자열, 숫자, 날짜, Bool, IP, SRN, Null) 연산자를 제공합니다.
문자열 연산자
조건 연산자 연산자 유형 설명 StringEquals 긍정 연산자 정확한 일치, 대소문자 구분 StringNotEquals 부정 연산자 불일치 StringEqualsIsIgnoreCase 긍정 연산자 정확한 일치, 대소문자 무시 StringNotEqualsIsIgnoreCase 부정 연산자 불일치, 대소문자 무시 StringLike 긍정 연산자 대소문자 구분 일치, 문자열 다중 문자 일치(*)인 와일드 카드를 값에 포함 가능 StringNotLike 부정 연산자 대소문자 구분 불일치, 문자열 다중 문자 일치(*)인 와일드 카드를 값에 포함 가능 표. 문자열 연산자숫자 연산자
조건 연산자 연산자 유형 설명 NumericEquals 긍정 연산자 일치 NumericNotEquals 부정 연산자 불일치 NumericLessThan 긍정 연산자 미만 일치 NumericLessThanEquals 긍정 연산자 이하 일치 NumericGreaterThan 긍정 연산자 초과 일치 NumericGreaterThanEquals 긍정 연산자 이상 일치 표. 숫자 연산자날짜 연산자
조건 연산자 연산자 유형 설명 DateEquals 긍정 연산자 특정 날짜 일치 DateNotEquals 부정 연산자 불일치 DateLessThan 긍정 연산자 특정 날짜/시간 이전에 일치 DateLessThanEquals 긍정 연산자 특정 날짜/시간 또는 이전에 일치 DateGreaterThan 긍정 연산자 특정 날짜/시간 이후에 일치 DateGreaterThanEquals 긍정 연산자 특정 날짜/시간 또는 이후에 일치 표. 날짜 연산자Bool 연산자
조건 연산자 연산자 유형 설명 Bool 긍정 연산자 True, False 일치 표. Bool 연산자IP 연산자
조건 연산자 연산자 유형 설명 IpAddress 긍정 연산자 지정된 IP 주소 또는 범위 NotIpAddress 부정 연산자 지정된 IP 주소 또는 범위를 제외한 모든 IP 주소 표. IP 연산자SRN 연산자
조건 연산자 연산자 유형 설명 SrnEquals, SrnLike 긍정 연산자 SRN 일치 SrnNotEquals, SrnNotLike 부정 연산자 SRN 불일치 표. SRN 연산자Null 연산자
조건 연산자 연산자 유형 설명 Null 긍정 연산자 - 키가 부재 하거나 값이 null인 경우 \→ True
- 키가 존재하고 값이 null이 아닌 경우 \→ False
표. Null 연산자
조건 키(condition-key)
조건 키는 전역 조건 키과 자원 속성 키로 구분됩니다.
전역 조건 키(Global condition key)
Samsung Cloud Platform에 사전 정의된 조건 키로써 요청 정보, 자원 공통 정보(ex-tag), 네트워크 정보 등의 데이터를 정의합니다.
| 조건 키 | 데이터 유형 | 단수/복수 | 설명 | 예제 |
|---|---|---|---|---|
| scp:UserId | string | single | 요청 사용자 id | “scp:UserId” : [“efda56a968cd45b2873d9bf5fab58e95”] |
| scp:UserName | string | single | 요청 사용자 명 | “scp:UserName” : [“foo”] |
| scp:MultiFactorAuthPresent | bool | string | MFA 인증을 통한 요청 여부 | “scp:MultiFactorAuthPresent” : [“True”] |
| scp:RequestedRegion | string | single | 요청 region | “scp:RequestedRegion” : [“kr-west1”] |
| scp:RequestAttribute/{AttributeKey} | string | single | 요청 속성 값(AttributeKey)
| “scp:RequestAttribute/body[‘foo’]” : [“true”] |
| scp:TagKeys | string | single / multiple | 요청 태그 키 | “scp:TagKeys” : [“tag-key”] |
| scp:RequestTag | string | single | 요청 태그 키 값 | “scp:RequestTag/tag-key” : [“tag-value”] |
| scp:ResourceTag/{TagKey} | string | single | 자원의 태그 키 값 | “scp:ResourceTag/foo” : [“bab”] |
| scp:SourceIp | ip_address | single | 현재 요청하는 주체의 IP | “scp:SourceIp” : [“1.1.1.1/24”] |
| scp:CurrentTime | datetime | single | 요청 시간(UTC 기준, ISO 8601 format) | “scp:CurrentTime” : [“2025-11-06T16:10:38Z”] |
자원 속성 키(Resource attribute key)
고유 자원에 대한 속성 키로써 자원의 속성값을 기준으로 조건값을 검사할 때 사용합니다.
"{service}:{resource_type}{attribute_name}"
Resource definition에서 정의된 attributes에 abac:true인 대상의 속성에 한해서만 정의할 수 있으며 정의되지 않은 속성값을 입력할 경우, 해당 condition 정책은 무시됩니다(Not found).- 자원 속성명 사용 예시
"iam:userLastname" (O) # 자원에 정의된 속성명 (service: iam, resource: user, attribute_name : lastname)
"iam:userLASTNAME" (O) # 자원에 정의된 속성명 (대소문자 관계 없음)
"iam:userLast_name" (X) # 자원에 정의된 속성명이 아닌 경우 ㅎ
"iam:userEmail" (X) # abac이 false인 경우
"iam:state" (X) # abac 필드가 정의되어 있지 않은 경우
kind: scp-resourcemanager:resource-definition
service_type: scp-iam
name: scp-iam:user
resources_uri: /v1/users
resource_type: user
display_name:
ko: '사용자'
en: 'User'
product_id: IAM
attributes:
state:
type: string
uri: /v1/users/{resource_id}
method: GET
jsonpath: $.state
firstname:
type: string
uri: /v1/users/{resource_id}
method: GET
jsonpath: $.first_name
abac: true
lastname:
type: string
uri: /v1/users/{resource_id}
method: GET
jsonpath: $.last_name
abac: true
email:
type: string
uri: /v1/users/{resource_id}
method: GET
jsonpath: $.email
abac: falsekind: scp-resourcemanager:resource-definition
service_type: scp-iam
name: scp-iam:user
resources_uri: /v1/users
resource_type: user
display_name:
ko: '사용자'
en: 'User'
product_id: IAM
attributes:
state:
type: string
uri: /v1/users/{resource_id}
method: GET
jsonpath: $.state
firstname:
type: string
uri: /v1/users/{resource_id}
method: GET
jsonpath: $.first_name
abac: true
lastname:
type: string
uri: /v1/users/{resource_id}
method: GET
jsonpath: $.last_name
abac: true
email:
type: string
uri: /v1/users/{resource_id}
method: GET
jsonpath: $.email
abac: false- 자원의 속성명은
Resource definition에서 정의된attributes에 정의된 속성 데이터를 사용합니다. - Resource definition에 대한 자세한 내용은 Resource Definition 가이드를 참고하세요.
Condition Key 정의 예시
- 전역 조건 키(Global condition key) 예시: 특정 정책 자원 태그의 키(Environment)의 값이 “Local” 또는 “Dev"인 경우에만 그룹 상세 조회를 허용하는 정책
{
"Version": "2024-07-01",
"Statement": [
{
"Sid": "statement1",
"Action": ["iam:showPolicy"],
"Effect": "Allow",
"Resource": ["*"],
"Condition": {
"StringEquals": {
"scp:ResourceTag/Environment": [ # 전역 조건 키(scp:ResourceTag)를 사용한 정의 형태
"Local", "Dev"
]
}
}
}
]
}{
"Version": "2024-07-01",
"Statement": [
{
"Sid": "statement1",
"Action": ["iam:showPolicy"],
"Effect": "Allow",
"Resource": ["*"],
"Condition": {
"StringEquals": {
"scp:ResourceTag/Environment": [ # 전역 조건 키(scp:ResourceTag)를 사용한 정의 형태
"Local", "Dev"
]
}
}
}
]
}- 자원 속성 키(Resource attribute key) 예시배경색 변경
{ "Version": "2024-07-01", "Statement": [ { "Sid": "statement1", "Action": ["server:showInstance"], "Effect": "Allow", "Resource": ["*"], "Condition" : { "StringEquals" : { "virtual-servers:instanceFlavor" : ["m1.small"] # virtual-servers 서비스의 intance 리소스의 flavor 속성이 "m1.small"인 경우 } } } ] }{ "Version": "2024-07-01", "Statement": [ { "Sid": "statement1", "Action": ["server:showInstance"], "Effect": "Allow", "Resource": ["*"], "Condition" : { "StringEquals" : { "virtual-servers:instanceFlavor" : ["m1.small"] # virtual-servers 서비스의 intance 리소스의 flavor 속성이 "m1.small"인 경우 } } } ] }자원 속성 키(Resource attribute key) 예시
정책 조건값(condition-value)
조건 키에 대한 값을 정의합니다.
"Condition" : {
"StringEquals" : {
"scp:resourceTag/key1": ["value1", "value2", "value3"] # 리소스의 태그 키가 key1인 값이 value1 또는 value2 또는 value3인 경우
}
한정자(quailfier)
Condition key로부터 추출된 요청 컨텍스트값이 여러 개의 값을 가진인 경우에 동작 방법을 정의합니다.(요청 컨텍스트값이 1개일 경우에는 생략)한정자는 ForAnyValue, ForAllValues로 구분되며 한정자를 작성하지 않을 경우, ForAnyValue가 기본값으로 정의됩니다.
ForAnyValue: 요청 컨텍스트에 추출된 값들이 Condition에 정의된 Operand와 1개 이상 일치할 경우 TrueForAllValues: 요청 컨텍스트에 추출된 값들이 Condition에 정의된 Operand 리스트의 하위 집합일 경우 True
{
...
"Condition" : {
"ForAllValues:StringEquals" : {
"scp:TagKeys": ["key1", "key2", "key3"]
}
}
}
한정자 동작 예시
“scp:TagKeys”로 부터 추출되는 요청값이 1개인 경우: 한정자와 관계없이 Operand별로 OR로 동작“scp:TagKeys”로 부터 추출되는 요청값이 2개 이상인 경우: 한정자에 따라 결과 차이
# 추출되는 요청 컨텍스트값이 ["key1", "key2", "key4"] 인 경우
Operand: ["key1", "key2", "key3"]
# 요청 컨텍스트값 중 key1는 Operand에 포함되므로 True
# 요청 컨텍스트값 중 key2는 Operand에 포함되므로 True
# 요청 컨텍스트값 중 key4는 Operand에 포함되지 않으므로 False
ForAnyValue는 3개의 요청 컨텍스트 값 중 1개라도 일치할 경우엔 True로 판단
ForAllValues는 3개의 요청 컨텍스트 값이 모두 True 일 경우에만 최종 True로 판단# 추출되는 요청 컨텍스트값이 ["key1", "key2", "key4"] 인 경우
Operand: ["key1", "key2", "key3"]
# 요청 컨텍스트값 중 key1는 Operand에 포함되므로 True
# 요청 컨텍스트값 중 key2는 Operand에 포함되므로 True
# 요청 컨텍스트값 중 key4는 Operand에 포함되지 않으므로 False
ForAnyValue는 3개의 요청 컨텍스트 값 중 1개라도 일치할 경우엔 True로 판단
ForAllValues는 3개의 요청 컨텍스트 값이 모두 True 일 경우에만 최종 True로 판단
