서비스 계정에 대한 액세스 관리

이 페이지에서는 단일 서비스 계정에 대해 구성원 액세스를 부여, 변경, 취소하는 방법을 설명합니다. 프로젝트, 폴더, 조직의 모든 서비스 계정에 대해 구성원 액세스를 관리하려면 프로젝트, 폴더, 조직 수준에서 프로세스를 관리합니다.

Identity and Access Management(IAM)에서 액세스는 IAM 정책을 통해 관리됩니다. IAM 정책은 Google Cloud 리소스에 연결됩니다. 각 정책에는 사용자 또는 서비스 계정과 같은 하나 이상의 구성원을 IAM 역할과 연결하는 역할 결합의 컬렉션이 포함되어 있습니다. 이러한 역할 결합은 정책이 연결된 리소스 및 리소스의 모든 하위 요소 모두에서 지정된 역할을 구성원에 부여합니다. IAM 정책에 대한 자세한 내용은 정책 이해를 참조하세요.

서비스 계정은 다른 구성원에게 액세스가 부여될 수 있는 리소스이기도 하고 다른 리소스에 대한 액세스가 부여될 수 있는 구성원이기도 합니다. 이 페이지에서는 서비스 계정을 리소스로 취급하고 이에 대한 액세스를 다른 구성원에게 부여하는 방법을 설명합니다. 다른 리소스에 대한 액세스를 서비스 계정에 부여하는 방법을 알아보려면 다음 가이드를 참조하세요.

이 페이지에서는 Google Cloud Console, gcloud 명령줄 도구, REST API를 사용하여 서비스 계정에 대해 액세스를 관리하는 방법을 설명합니다. IAM 클라이언트 라이브러리를 사용하여 액세스를 관리할 수도 있습니다.

시작하기 전에

서비스 계정에 대해 알아봅니다.

필수 권한

서비스 계정에 대해 액세스를 관리하려면 다음 권한이 포함된 역할이 필요합니다.

  • iam.serviceAccounts.get
  • iam.serviceAccounts.list
  • iam.serviceAccounts.getIamPolicy
  • iam.serviceAccounts.setIamPolicy

최소 권한의 원칙을 준수하면서 이러한 권한을 얻으려면 관리자에게 다음 역할 중 하나를 부여해 달라고 요청하세요.

  • 서비스 계정 관리자(roles/iam.serviceAccountAdmin)
  • 보안 관리자(roles/iam.securityAdmin)

또는 관리자가 필요한 권한(커스텀 역할 또는 더 많은 권한이 있는 사전 정의된 역할 등)을 포함하는 다른 역할을 부여할 수 있습니다.

현재 액세스 보기

다음 섹션에서는 Cloud Console, gcloud 도구, REST API를 사용하여 서비스 계정에 액세스할 수 있는 사람을 확인하는 방법을 보여줍니다. 또한 서비스 계정의 IAM 정책을 가져오기 위해 IAM 클라이언트 라이브러리를 사용하여 액세스를 볼 수 있습니다.

Console

  1. Cloud Console에서 서비스 계정 페이지로 이동합니다.

    서비스 계정으로 이동

  2. 프로젝트를 선택합니다.

  3. 서비스 계정의 이메일 주소를 클릭합니다.

  4. 권한 탭으로 이동합니다. 이 서비스 계정에 대한 액세스 권한이 있는 구성원 섹션에는 서비스 계정에 대해 역할이 부여된 모든 구성원이 나열됩니다.

    이 목록에는 상위 리소스에 부여된 역할로부터 액세스 권한을 얻는 구성원이 포함됩니다. 정책 상속에 대한 자세한 내용은 정책 상속 및 리소스 계층을 참조하세요.

  5. 선택사항: Google 관리 서비스 계정에 대한 역할 부여를 보려면 Google 제공 역할 부여 포함 체크박스를 선택합니다.

gcloud

서비스 계정에 액세스할 수 있는 사용자를 보려면 서비스 계정에 대해 IAM 정책을 가져옵니다. IAM 정책을 해석하는 방법을 알아보려면 정책 이해를 참조하세요.

서비스 계정의 IAM 정책을 가져오려면 서비스 계정에 대해 get-iam-policy 명령어를 실행합니다.

gcloud iam service-accounts get-iam-policy SA_ID --format=FORMAT > PATH

다음 값을 제공합니다.

  • SA_ID: 서비스 계정의 ID입니다. 다음 형식의 서비스 계정 이메일 주소일 수 있습니다.
  • FORMAT: 정책에 사용하려는 형식입니다. json 또는 yaml을 사용합니다.
  • PATH: 정책에 대한 새 출력 파일의 경로입니다.

예를 들어 다음 명령어는 서비스 계정 my-service-account의 정책을 가져오고 이를 JSON 형식으로 홈 디렉터리에 저장합니다.

gcloud iam service-accounts get-iam-policy my-service-account --format json > ~/policy.json

REST

서비스 계정에 액세스할 수 있는 사용자를 보려면 서비스 계정에 대해 IAM 정책을 가져옵니다. IAM 정책을 해석하는 방법을 알아보려면 정책 이해를 참조하세요.

serviceAccounts.getIamPolicy 메서드는 서비스 계정의 IAM 정책을 가져옵니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트 ID 프로젝트 ID는 my-project 같은 영숫자 문자열입니다.
  • SA_ID: 서비스 계정의 ID입니다. SA_NAME@PROJECT_ID.iam.gserviceaccount.com 형식의 서비스 계정 이메일 주소이거나 서비스 계정의 고유 숫자 ID일 수 있습니다.

  • POLICY_VERSION: 반환할 정책 버전입니다. 요청에는 정책 버전 3인 최신 정책 버전이 지정되어야 합니다. 자세한 내용은 정책을 가져올 때 정책 버전 지정을 참조하세요.

HTTP 메서드 및 URL:

POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_ID:getIamPolicy

JSON 요청 본문:

{
  "options": {
    "requestedPolicyVersion": POLICY_VERSION
  }
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

응답에는 서비스 계정의 IAM 정책이 포함됩니다. 예를 들면 다음과 같습니다.

{
  "version": 1,
  "etag": "BwWKmjvelug=",
  "bindings": [
    {
      "role": "roles/serviceAccountAdmin",
      "members": [
        "user:admin@example.com"
      ]
    }
  ]
}

단일 역할 부여 또는 취소

서비스 계정의 IAM 정책을 직접 수정하지 않고 Cloud Console 및 gcloud 도구를 사용하여 단일 구성원에 대해 단일 역할을 빠르게 부여하거나 취소할 수 있습니다. 일반적인 구성원 유형에는 Google 계정, 서비스 계정, Google 그룹스, 도메인이 포함됩니다. 모든 구성원 유형 목록은 ID 관련 개념을 참조하세요.

단일 역할 부여

구성원에 단일 역할을 부여하려면 다음 안내를 따르세요.

Console

  1. Cloud Console에서 서비스 계정 페이지로 이동합니다.

    서비스 계정으로 이동

  2. 프로젝트를 선택합니다.

  3. 서비스 계정의 이메일 주소를 클릭합니다.

  4. 권한 탭으로 이동하고 이 서비스 계정에 대해 액세스 권한이 있는 구성원 섹션을 찾습니다.

  5. 역할을 부여할 구성원을 선택합니다.

    • 기존 구성원에 역할을 부여하려면 구성원의 이메일 주소가 포함된 행을 찾고, 해당 행에서 구성원 수정을 클릭하고, 다른 역할 추가를 클릭합니다.

      Google 관리형 서비스 계정에 역할을 부여하려면 Google 제공 역할 부여 포함 체크박스를 선택하여 이메일 주소를 확인해야 합니다.

    • 새 구성원에 역할을 부여하려면 액세스 부여를 클릭한 후 구성원의 이메일 주소를 입력합니다.

  6. 드롭다운 목록에서 부여할 역할을 선택합니다. 보안 권장사항에 따라 구성원에 필요한 권한만 포함된 역할을 선택합니다.

  7. 선택사항: 역할에 조건을 추가합니다.

  8. 저장을 클릭합니다. 구성원에게 서비스 계정에 대한 역할이 부여됩니다.

gcloud

구성원에 역할을 빠르게 부여하려면 add-iam-policy-binding 명령어를 실행하세요.

gcloud iam service-accounts add-iam-policy-binding SA_ID \
    --member=MEMBER --role=ROLE_ID \
    --condition=CONDITION

다음 값을 제공합니다.

  • SA_ID: 서비스 계정의 ID입니다. SA_NAME@PROJECT_ID.iam.gserviceaccount.com 형식의 서비스 계정 이메일 주소이거나 서비스 계정의 고유 숫자 ID일 수 있습니다.

  • MEMBER: 구성원의 식별자로, 대개 MEMBER-TYPE:ID 형식을 따릅니다. 예를 들면 user:my-user@example.com입니다. MEMBER가 가질 수 있는 값의 전체 목록은 정책 binding 참조를 확인하세요.

    구성원 유형 user의 경우 식별자의 도메인 이름은 Google Workspace 도메인 또는 Cloud ID 도메인이어야 합니다. Cloud ID 도메인을 설정하는 방법은 Cloud ID 개요를 참조하세요.

  • ROLE_ID: 부여할 역할의 이름입니다. 예를 들면 roles/iam.serviceAccountUser입니다. 역할 목록은 역할 이해를 참조하세요.

  • CONDITION: 선택사항. 역할 결합에 추가할 조건입니다. 조건에 대한 자세한 내용은 조건 개요를 참조하세요.

예를 들어 서비스 계정 my-service-account@my-project.iam.gserviceaccount.com에 대해 my-user@example.com 사용자에게 서비스 계정 사용자 역할을 부여하려면 다음 안내를 따르세요.

gcloud iam service-accounts add-iam-policy-binding my-service-account@my-project.iam.gserviceaccount.com \
    --member=user:my-user@example.com --role=roles/iam.serviceAccountUser

단일 역할 취소

구성원의 단일 역할을 취소하려면 다음 안내를 따르세요.

Console

  1. Cloud Console에서 서비스 계정 페이지로 이동합니다.

    서비스 계정으로 이동

  2. 프로젝트를 선택합니다.

  3. 서비스 계정의 이메일 주소를 클릭합니다.

  4. 권한 탭으로 이동하고 이 서비스 계정에 대해 액세스 권한이 있는 구성원 섹션을 찾습니다.

  5. 액세스를 취소하려는 구성원의 이메일 주소가 있는 행을 찾습니다. 그런 후 해당 행에서 구성원 수정을 클릭합니다.

  6. 취소할 역할마다 삭제 버튼을 클릭한 다음 저장을 클릭합니다.

gcloud

사용자에게서 역할을 빠르게 취소하려면 remove-iam-policy-binding 명령어를 실행합니다.

gcloud iam service-accounts remove-iam-policy-binding SA_ID \
    --member=MEMBER --role=ROLE_ID

다음 값을 제공합니다.

  • SA_ID: 서비스 계정의 ID입니다. SA_NAME@PROJECT_ID.iam.gserviceaccount.com 형식의 서비스 계정 이메일 주소이거나 서비스 계정의 고유 숫자 ID일 수 있습니다.

  • MEMBER: 구성원의 식별자로, 대개 MEMBER-TYPE:ID 형식을 따릅니다. 예를 들면 user:my-user@example.com입니다. MEMBER가 가질 수 있는 값의 전체 목록은 정책 binding 참조를 확인하세요.

    구성원 유형 user의 경우 식별자의 도메인 이름은 Google Workspace 도메인 또는 Cloud ID 도메인이어야 합니다. Cloud ID 도메인을 설정하는 방법은 Cloud ID 개요를 참조하세요.

  • ROLE_ID: 취소할 역할의 이름입니다. 예를 들면 roles/iam.serviceAccountUser입니다. 역할 목록은 역할 이해를 참조하세요.

예를 들어 my-service-account@my-project.iam.gserviceaccount.com 서비스 계정에 대해 my-user@example.com 사용자에게서 서비스 계정 사용자 역할을 취소하려면 다음 안내를 따르세요.

gcloud iam service-accounts remove-iam-policy-binding my-service-account@my-project.iam.gserviceaccount.com \
    --member=user:my-user@example.com --role=roles/iam.serviceAccountUser

여러 역할 부여 또는 취소

여러 역할의 부여 및 취소가 포함된 대규모 액세스 변경을 수행하려면 읽기-수정-쓰기 패턴을 사용하여 서비스 계정의 IAM 정책을 업데이트합니다.

  1. getIamPolicy()를 호출하여 현재 정책을 읽습니다.
  2. 텍스트 편집기를 사용하거나 프로그래매틱 방식으로 반환된 정책을 수정하여 구성원 또는 역할 결합을 추가하거나 삭제합니다.
  3. setIamPolicy()를 호출하여 업데이트된 정책을 작성합니다.

이 섹션에서는 gcloud 도구 및 REST API를 사용하여 정책을 업데이트하는 방법을 보여줍니다. 또한 IAM 클라이언트 라이브러리를 사용하여 정책을 업데이트할 수도 있습니다.

현재 정책 가져오기

gcloud

서비스 계정의 IAM 정책을 가져오려면 서비스 계정에 대해 get-iam-policy 명령어를 실행합니다.

gcloud iam service-accounts get-iam-policy SA_ID --format=FORMAT > PATH

다음 값을 제공합니다.

  • SA_ID: 서비스 계정의 ID입니다. 다음 형식의 서비스 계정 이메일 주소일 수 있습니다.
  • FORMAT: 정책에 사용하려는 형식입니다. json 또는 yaml을 사용합니다.
  • PATH: 정책에 대한 새 출력 파일의 경로입니다.

예를 들어 다음 명령어는 서비스 계정 my-service-account의 정책을 가져오고 이를 JSON 형식으로 홈 디렉터리에 저장합니다.

gcloud iam service-accounts get-iam-policy my-service-account --format json > ~/policy.json

REST

serviceAccounts.getIamPolicy 메서드는 서비스 계정의 IAM 정책을 가져옵니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트 ID 프로젝트 ID는 my-project 같은 영숫자 문자열입니다.
  • SA_ID: 서비스 계정의 ID입니다. SA_NAME@PROJECT_ID.iam.gserviceaccount.com 형식의 서비스 계정 이메일 주소이거나 서비스 계정의 고유 숫자 ID일 수 있습니다.

  • POLICY_VERSION: 반환할 정책 버전입니다. 요청에는 정책 버전 3인 최신 정책 버전이 지정되어야 합니다. 자세한 내용은 정책을 가져올 때 정책 버전 지정을 참조하세요.

HTTP 메서드 및 URL:

POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_ID:getIamPolicy

JSON 요청 본문:

{
  "options": {
    "requestedPolicyVersion": POLICY_VERSION
  }
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

응답에는 서비스 계정의 IAM 정책이 포함됩니다. 예를 들면 다음과 같습니다.

{
  "version": 1,
  "etag": "BwWKmjvelug=",
  "bindings": [
    {
      "role": "roles/serviceAccountAdmin",
      "members": [
        "user:admin@example.com"
      ]
    }
  ]
}

적절한 유형의 파일로 응답을 저장합니다(json 또는 yaml).

정책 수정

특정 사용자에게 역할을 부여하거나 이 사용자의 역할을 취소하려면 프로그래매틱 방식으로 또는 텍스트 편집기를 사용하여 서비스 계정 정책의 로컬 복사본을 수정합니다.

다른 정책 변경사항을 덮어쓰지 않도록 하려면 정책의 etag 필드를 수정하거나 삭제하지 마세요. etag 필드는 현재 정책 상태를 식별합니다. 업데이트된 정책을 설정할 때 IAM은 ompares요청에 있는 etag 값을 기존 etag와 비교하고, 값이 일치할 경우에만 정책에 기록합니다.

역할 부여

구성원에게 역할을 부여하려면 정책에서 역할 binding을 수정합니다. 부여할 수 있는 역할에 대해 알아보려면 역할 이해 또는 서비스 계정에 부여할 수 있는 역할 보기를 참조하세요.

이미 정책에 포함된 역할을 부여하려면 기존 역할 결합에 구성원을 추가합니다.

gcloud

기존 역할 결합에 구성원을 추가하여 반환된 정책을 수정합니다. 업데이트된 정책을 설정해야만 이 정책 변경사항이 적용됩니다.

예를 들어 반환된 정책에 다음 역할 결합이 포함된다고 가정해보세요. 이 역할 결합은 서비스 계정 사용자 역할(roles/iam.serviceAccountUser)을 kai@example.com에 부여합니다.

{
  "role": "roles/iam.serviceAccountUser",
  "members": [
    "user:kai@example.com"
  ]
}

동일한 역할을 raha@example.com에 부여하려면 기존 역할 결합에 raha@example.com을 추가합니다.

{
  "role": "roles/iam.serviceAccountUser",
  "members": [
    "user:kai@example.com",
    "user:raha@example.com"
  ]
}

REST

기존 역할 결합에 구성원을 추가하여 반환된 정책을 수정합니다. 업데이트된 정책을 설정해야만 이 정책 변경사항이 적용됩니다.

예를 들어 반환된 정책에 다음 역할 결합이 포함된다고 가정해보세요. 이 역할 결합은 서비스 계정 사용자 역할(roles/iam.serviceAccountUser)을 kai@example.com에 부여합니다.

{
  "role": "roles/iam.serviceAccountUser",
  "members": [
    "user:kai@example.com"
  ]
}

동일한 역할을 raha@example.com에 부여하려면 기존 역할 결합에 raha@example.com을 추가합니다.

{
  "role": "roles/iam.serviceAccountUser",
  "members": [
    "user:kai@example.com",
    "user:raha@example.com"
  ]
}

정책에 아직 포함되지 않은 역할을 부여하려면 새 역할 결합을 추가합니다.

gcloud

구성원에 역할을 부여하는 새 역할 결합을 추가하여 반환된 정책을 수정합니다. 업데이트된 정책을 설정해야만 이 정책 변경사항이 적용됩니다.

예를 들어 raha@example.com에 서비스 계정 토큰 생성자 역할(roles/iam.serviceAccountTokenCreator)을 부여하려면 해당 정책의 bindings 배열에 다음 역할 결합을 추가합니다.

{
  "role": "roles/iam.serviceAccountTokenCreator",
  "members": [
    "user:raha@example.com"
  ]
}

REST

구성원에 역할을 부여하는 새 역할 결합을 추가하여 반환된 정책을 수정합니다. 업데이트된 정책을 설정해야만 이 정책 변경사항이 적용됩니다.

예를 들어 raha@example.com에 서비스 계정 토큰 생성자 역할(roles/iam.serviceAccountTokenCreator)을 부여하려면 해당 정책의 bindings 배열에 다음 역할 결합을 추가합니다.

{
  "role": "roles/iam.serviceAccountTokenCreator",
  "members": [
    "user:raha@example.com"
  ]
}

역할 취소

역할을 취소하려면 역할 결합에서 구성원을 삭제합니다. 구성원이 역할 결합에 있는 유일한 구성원이면 정책에서 전체 역할 결합을 삭제합니다.

gcloud

구성원 또는 전체 역할 결합을 삭제하여 반환된 정책을 수정합니다. 업데이트된 정책을 설정해야만 이 정책 변경사항이 적용됩니다.

예를 들어 반환된 정책에 다음 역할 결합이 포함된다고 가정해보세요. 이 역할 결합은 서비스 계정 사용자 역할(roles/iam.serviceAccountUser)을 kai@example.comraha@example.com에 부여합니다.

{
  "role": "roles/iam.serviceAccountUser",
  "members": [
    "user:kai@example.com",
    "user:raha@example.com"
  ]
}

kai@example.com에서 역할을 취소하려면 역할 결합에서 kai@example.com을 삭제합니다.

{
  "role": "roles/iam.serviceAccountUser",
  "members": [
    "user:raha@example.com"
  ]
}

kai@example.comraha@example.com 모두에서 역할을 취소하려면 정책에서 역할 결합을 삭제합니다.

REST

구성원 또는 전체 역할 결합을 삭제하여 반환된 정책을 수정합니다. 업데이트된 정책을 설정해야만 이 정책 변경사항이 적용됩니다.

예를 들어 반환된 정책에 다음 역할 결합이 포함된다고 가정해보세요. 이 역할 결합은 서비스 계정 사용자 역할(roles/iam.serviceAccountUser)을 kai@example.comraha@example.com에 부여합니다.

{
  "role": "roles/iam.serviceAccountUser",
  "members": [
    "user:kai@example.com",
    "user:raha@example.com"
  ]
}

kai@example.com에서 역할을 취소하려면 역할 결합에서 kai@example.com을 삭제합니다.

{
  "role": "roles/iam.serviceAccountUser",
  "members": [
    "user:raha@example.com"
  ]
}

kai@example.comraha@example.com 모두에서 역할을 취소하려면 정책에서 역할 결합을 삭제합니다.

정책 설정

원하는 역할을 부여하고 취소하도록 정책을 수정한 다음에는 setIamPolicy()를 호출하여 업데이트를 수행합니다.

gcloud

리소스에 대해 IAM 정책을 설정하려면 서비스 계정에 대해 set-iam-policy 명령어를 실행합니다.

gcloud iam service-accounts set-iam-policy SA_ID PATH

다음 값을 제공합니다.

  • SA_ID: 서비스 계정의 ID입니다. SA_NAME@PROJECT_ID.iam.gserviceaccount.com 형식의 서비스 계정 이메일 주소이거나 서비스 계정의 고유 숫자 ID일 수 있습니다.

  • PATH: 새 정책이 포함된 파일의 경로입니다.

응답에는 업데이트된 정책이 포함됩니다.

예를 들어 다음 명령어는 policy.json에 저장된 정책을 서비스 계정 my-service-account@my- project.iam.gserviceaccount.com의 정책으로 설정합니다.

gcloud iam service-accounts set-iam-policy my-service-account@my-project.iam.gserviceaccount.com \
    ~/policy.json

REST

serviceAccounts.setIamPolicy 메서드는 서비스 계정에 업데이트된 IAM 정책을 설정합니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트 ID 프로젝트 ID는 my-project 같은 영숫자 문자열입니다.
  • SA_ID: 서비스 계정의 ID입니다. SA_NAME@PROJECT_ID.iam.gserviceaccount.com 형식의 서비스 계정 이메일 주소이거나 서비스 계정의 고유 숫자 ID일 수 있습니다.

  • POLICY: 설정하려는 정책의 JSON 표현입니다. 정책 형식에 대한 자세한 내용은 정책 참조를 확인하세요.

    예를 들어 이전 단계에 표시된 정책을 설정하려면 policy를 다음으로 바꿉니다.

    {
      "version": 1,
      "etag": "BwUqLaVeua8=",
      "bindings": [
        {
          "role": "roles/iam.serviceAccountUser",
          "members": [
            "user:robin@example.com"
          ]
        },
        {
          "role": "roles/serviceAccountAdmin",
          "members": [
            "user:admin@example.com"
          ]
        }
      ]
    }
    

HTTP 메서드 및 URL:

POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_ID:setIamPolicy

JSON 요청 본문:

{
  "policy": POLICY
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

응답에는 업데이트된 정책이 포함됩니다.

다음 단계

직접 사용해 보기

Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.

무료로 시작하기