본문 바로가기
CSP (Cloud Service Provider)/GCP

IAM - Condition

by BTC_.tf 2023. 11. 24.

베하! 어김없이 돌아온 금요일의 엄팀입니다.

서울은 날씨가 점점 추워지고 있는데, 부산은 어느정도로 추운지 궁금하네요.

전 빨리 눈사람을 만들고 싶어요.

 

 

오늘의 포스팅 주제는 GCP IAM의 Condition입니다.

Condition이라는 단어는 '상태', '지위' 등을 뜻하지만 '조건'이라는 뜻도 가지고 있는데요.

오늘 알아볼 Condition은 이 '조건'을 뜻하겠습니다.

 

 

IAM Condition을 활용하면 Google Cloud Resource에 조건부 속성 기반(attribute based) Access Control을 정의하고 적용할 수 있습니다.

IAM Condition을 사용하면 지정된 조건이 충족되는 경우에만 주 구성원에 Access를 부여하도록 선택할 수 있습니다.

Condition은 Resource의 Allow Policy 중 Role Binding에서 지정됩니다.

Condition이 존재하면 Condition 표현식이 true로 지정되어 있어야만 Access가 가능해집니다.

 

 

Condition이 있는 Allow Policy는 다음과 같습니다.

"bindings": [
  {
    "role": ...,
    "members": ...,
    "condition": ...
  },
  ...
]

 

Allow Policy에는 위 구조 같은 Role Binding이 하나 이상 포함되어 있습니다.

Role Binding에서 Condition 객체는 선택사항이며, Condition이 존재하지 않을 경우 Role Binding의 Member는 항상 지정된 Resouce에 대한 Role을 가집니다.

 

Condition 객체의 구조는 다음과 같습니다.

"condition": {
    "title": ...,
    "description": ...,
    "expression": ...
}

 

이때, Condition 객체 구조에서 title은 필수요소지만, description은 선택사항입니다.

expression 필드는 필수요소이며, Common Expression Language(CEL)의 하위 집합을 사용해 속성 기반 논리 표현식을 정의합니다.

Condition 표현식에는 여러 문이 포함될 수 있으며, 각 문은 하나의 속성을 나타냅니다.

 

추가로 Common Expression Language(CEL)이란 IAM Condition에서 표현식을 지정하는 데 사용되는 표현식 언어입니다. 속성 기반 논리 표현식을 표현하도록 맞춤설정되어있습니다.

 

 

Condition 속성은 해당 유형 또는 이름과 같은 요청된 Resource, Timestamp, 대상 IP 주소와 같은 요청 세부정보를 기반으로 합니다.

 

Resource 속성을 사용하여 Access 요청에서 Resource를 지정하는 Condition을 작성할 수 있습니다.

지정 가능한 속성에는 Resource Type / Name, 사용중인 Google Cloud Service, Resource에 연결된 Tag 등이 있습니다.

전체 Resource 속성 List는 아래 링크를 참조해주세요.

https://cloud.google.com/iam/docs/conditions-resource-attributes?hl=ko

 

위 Resource 속성을 활용하면 다음과 같이 표현식을 정의할 수 있습니다. 아래는 예시 표현식입니다.

resource.type == "compute.googleapis.com/Instance"

 

Compute Engine VM 인스턴스에만 Access를 허용하고 다른 리소스 유형은 허용하지 않는다는 뜻입니다.

 

Request 속성을 사용하여 Request에 대한 세부정보를 지정하는 Condition을 작성할 수 있습니다.

지정 가능한 속성에는 Access Level,  날짜 및 시간, 대상 IP 주소 및 Port, 예상 URL Host 및 경로 등이 있습니다.

 

 

마지막으로 조건부 Role Binding을 허용하는 Service Type에는

Binary Authorization, Certificate Authority Service, Cloud Bigtable, Cloud Key Management Service(Cloud KMS), Cloud Spanner, Cloud Storage, Compute Engine, IAP, Resource Manager, Secret Manager가 있습니다.

 

 

오늘의 주제인 Condition, 어떠셨나요? IAM은 파고 팔 수록 재밌는 요소가 많은 것 같습니다.

이만 여기서 포스팅 마치며, 다들 즐거운 주말 보내세요. 베바!

댓글