와일드카드 정책을 사용한 액세스 권한 지정
특정 IAM 지원 서비스에 대한 액세스 권한을 할당할 때 정책에서사용자, 서비스 ID 및 액세스 그룹에 계정 리소스에 대한 액세스 권한을 부여하는 방법입니다. 액세스 정책에는 주체, 대상 및 역할이 포함됩니다. 고급 운영자를 사용하여 특정 명명 규칙을 충족하는 리소스에 대한 액세스 권한을 부여할 수 있습니다. 와일드카드 정책을 사용하여 일부 리소스에 대한 액세스 권한을 관리하는 데 필요한 정책의 수를 줄일 수 있습니다.
액세스를 지정하려면 리소스에 대한 관리자 역할이 있어야 합니다. 자세한 정보는 IAM 액세스를 참조하십시오.
JSON 정책 문서
대부분의 액세스 정책은 JSON 문서로 IBM Cloud®에 저장됩니다. 정책에서 stringEquals 연산자를 사용하는 경우 조회와 대상 문자열 간에 문자열이 정확하게 일치합니다. stringMatch 연산자를 사용하는 경우 별표(*), 물음표(?), 둘 다 또는 리터럴 값을 사용하여 패턴과 대상 문자열 간에 대/소문자를 구분하는 문자열
일치가 수행됩니다. 별표(*)는 문자열에서 0개 이상의 문자열의 순서를 표시하고, 물음표(?)는 단일 문자를 표시합니다. 다음 예를 참조하십시오.
*dev*는dev가 포함된 문자열과 일치합니다.dev*는dev로 시작하는 문자열과 일치합니다.*dev는dev로 끝나는 문자열과 일치합니다.
해당 서비스의 특정 속성에 지원되는 연산자에 대한 세부사항은 액세스를 지정 중인 특정 서비스의 문서를 참조하십시오.
와일드카드로 별표(*) 사용
다음 예에서는 특정 계정에서 dev로 시작하는 모든 Event Streams 주제를 관리하기 위해 모든 사용자에게 제공하는 정책을 작성하는 방법을 보여줍니다.
{
"type": "access",
"subjects": [
{
"attributes": [
{
"name": "iam_id",
"value": "IBMid-12345"
}
]
}
],
"roles": [
{
"role_id": "crn:v1:bluemix:public:iam::::serviceRole:Manager"
}
],
"resources": [
{
"attributes": [
{
"name": "accountId",
"value": "d727f71e99b14534b3267fab8cc9b09a"
},
{
"name": "serviceName",
"value": "messagehub"
},
{
"name": "resourceType",
"value": "topic"
},
{
"name": "resource",
"operator": "stringMatch",
"value": "dev*"
}
]
}
]
}
와일드카드로 물음표(?) 사용
다음 예제는 특정 패턴으로 끝나는 Event Streams 주제를 편집하기 위해 사용자 액세스를 제공하는 정책을 작성하는 방법을 보여줍니다.
"value": "*??81" 행에서 *은(는) 0개 이상의 문자를 표시하고 ??81(으)로 끝나는 모든 문자열과 일치합니다. ?은(는) 단일 문자를 나타냅니다. 두 개의 ??이(가) 있으므로 결과 패턴은 81에서 끝나는 네 개 이상의 문자의 문자열과
일치합니다.
{
"type": "access",
"subjects": [
{
"attributes": [
{
"name": "iam_id",
"value": "IBMid-12345"
}
]
}
],
"roles": [
{
"role_id": "crn:v1:bluemix:public:iam::::serviceRole:Writer"
}
],
"resources": [
{
"attributes": [
{
"name": "accountId",
"value": "d727f71e99b14534b3267fab8cc9b09a"
},
{
"name": "serviceName",
"value": "messagehub"
},
{
"name": "resourceType",
"operator": "stringEquals"
"value": "topic",
},
{
"name": "resource",
"operator": "stringMatch",
"value": "*??81"
}
]
}
]
}
별표(*)와 물음표(?)를 리터럴 문자로 사용
별표(*)와 물음표(?)를 리터럴 문자로 표현할 수 있으며, 각각을 두 개의 중괄호( {{}}) 안에 묶어 와일드카드로 해석되지 않도록 할 수 있습니다.
다음 예에서는 리터럴 문자 * 및 ? 를 포함하는 Event Streams 주제를 편집할 수 있는 액세스 권한을 사용자에게 부여하는 정책을 만드는 방법을 보여 줍니다. 주제는 마침표 . 뒤에 오는 log 문자열 사이의 단일 문자를 의미하는 .?.log 패턴으로 끝나야 합니다.
{
"type": "access",
"subjects": [
{
"attributes": [
{
"name": "iam_id",
"value": "IBMid-12345"
}
]
}
],
"roles": [
{
"role_id": "crn:v1:bluemix:public:iam::::serviceRole:Writer"
}
],
"resources": [
{
"attributes": [
{
"name": "accountId",
"value": "d727f71e99b14534b3267fab8cc9b09a"
},
{
"name": "serviceName",
"value": "messagehub"
},
{
"name": "resourceType",
"operator": "stringEquals"
"value": "topic",
},
{
"name": "resource",
"operator": "stringMatch",
"value": "dev-topic-{{*}}-{{?}}.?.log"
}
]
}
]
}
"value": "dev-topic-{{*}}-{{?}}.?.log" 에서 {{*}} 은 문자 * 를 나타내고 {{?}} 은 문자 ? 를 나타냅니다. 따라서 dev-topic-*-?.1.log 같은 주제는 이 패턴과 일치합니다.
다음 두 예는 dev* 대소문자를 구분하는 문자열 비교가 수행되는 동일한 평가를 나타냅니다.
{
"name": "resource",
"operator": "stringMatch",
"value": "dev{{*}}"
}
{
"name": "resource",
"operator": "stringEquals",
"value": "dev*"
}
문자열 비교
{{_include-segments/string-compare-intro-reuse.md}}
{{_include-segments/string-compare-table-reuse.md}}