Dev.log

구글 클라우드 플랫폼(GCP) Cloud IAM 본문

Google Cloud Platform

구글 클라우드 플랫폼(GCP) Cloud IAM

포켓몬빵 2022. 4. 20. 23:28

Cloud IAM은 Identity and Access Management의 약자로 구글 클라우드 서비스의 ID및 엑세스 관리를 제공해 주는 서비스로 누가 어떤 리소스에 대해 어떠한 엑세스 권한을 갖는지 제어 할 수 있게 합니다. 구글의 Cloud IAM을 사용하면 어드민은 누가, 언제, 어떤 리소스에 접근해서 이용하는지에 대한 제어를 할 수 있어서 클라우드 리소스를 중앙에서 쉽게 관리 할 수 있습니다. 또한 큰 규모의 조직에서도 조직 전체에 적용하는 기능들 역시 내제되어 있습니다. Cloud IAM에서 정책을 만들면 IAM에서 사용하는 ID별로 역할을 줄 수 있으며, 이는 구글 클라우드 플랫폼 내에서 각 리로스 별로도 설정할 수 있습니다. 구글 클라우드 플랫폼내 ID는 다음과 같이 이루어집니다.

  • 구글 계정 : 개별 사용자 계정으로 이와 관련된 모든 이메일 주소는 ID가 될 수 있습니다.
  • 서비스 계정 : 어플리케이션에 속한 계정으로 구글 클라우드 플랫폼에서 호스팅되는 코드를 실행할때는 코드를 실행하는 계정을 지정하게 됩니다.
  • 구글 그룹 : 여러 구글 계정과 서비스를 모은 구릅으로 모든 그룹에는 고유한 이메일 주소가 있습니다.
  • G-Suite : G-Suite 도메인은 조직의 지 수트 계정에서 생성된 모든 구글 계정으로 구성된 가상 그룹을 의미합니다.

IAM 정책

IAM 정책은 사용자에게 부여되는 권한의 유형을 가지고 있는 리스트입니다. 또한 역학별로 각 역할에 대한 권한을 가진 맴버들의 리스트로 구성되며 사용자가 리소스에 엑세스 할 떄 IAM 정책을 통해서 엑세스를 제어합니다. IAM 정책은 IAM Policy로 나타내며 다음과 같은 json형태의 목록으로 구성됩니다.

binding 맴버의 목록을 role에 연결합니다
role 구성원에게 배정하려는 역할을 의미합니다
members 해당 권한에 배정될 맴버리스트로 이곳에 들어갈 수 있는 구성원 유형은 구글 계정, 서비스 계정, 구글 그룹, G-Suit의 키를 사용하여 설정 할 수 있습니다
{
  "bindings": [
    {
      "role": "roles/resourcemanager.organizationAdmin",
      "members": [
        "user:mike@example.com",
        "group:admins@example.com",
        "domain:google.com",
        "serviceAccount:my-project-id@appspot.gserviceaccount.com"
      ]
    },
    {
      "role": "roles/resourcemanager.organizationViewer",
      "members": [
        "user:eve@example.com"
      ],
      "condition": {
        "title": "expirable access",
        "description": "Does not grant access after Sep 2020",
        "expression": "request.time < timestamp('2020-10-01T00:00:00.000Z')",
      }
    }
  ],
  "etag": "BwWWja0YfJA=",
  "version": 3
}

IAM의 역할

먼저 기본역할로는 소유자(Owner), 편집자(Editor), 뷰어(Viewer)로 나누어져있습니다.

Owner 소유자 모든 리소스에 대한 역할 및 관리
Editor 편집자 뷰어의 권한 + 상태 변경 작업
Viewer 뷰어 읽기 전용 작업(read-only)

이외에도, 사전 정의된 역할로 BigQuery 사용자와 같은 기본역할 보다 더욱 세부적인 엑세스를 부여하는 역할이 존재하며, 사전 정의된 역할 이상의 세부적인 관리가 필요 할 떄에는 커스텀 역할을 할당할 수 있습니다. 커스텀 역할의 경우 생성하기 위해서 "iam.role.crerate" 권한이 필요하기 때문에 커스텀 역할을 만들기 위해서는 role/iam.organizationRoleAdmin 또는 role/iam.role.Admin이 주어저야합니다.

Comments