서비스 계정 사용 제한

Resource Manager는 조직 정책에서 ID 및 액세스 관리 서비스 계정의 사용을 제한하는 데 사용할 수 있는 제약조건을 제공합니다.

이러한 제약조건을 설정하면 향후 서비스 계정을 만들고 수정할 때 적용됩니다. 이러한 제약조건은 소급 적용되지 않으며 이전에 만들어 구성한 서비스 계정에는 영향을 주지 않습니다.

시작하기 전에

제약조건을 설정하려면 조직 정책을 수정할 권한이 있어야 합니다. 예를 들어 orgpolicy.policyAdmin 역할은 조직 정책 제약조건을 설정할 권한이 있습니다. 조직 수준에서 정책을 관리하는 방법에 대해서는 제약조건 사용 페이지에서 자세히 알아보세요.

부울 제약조건

다음 제약조건은 부울 제약조건의 유형이며 true 또는 false로 설정됩니다.

기본 서비스 계정에 대한 자동 역할 부여 사용 중지

일부 Google Cloud 서비스는 자동으로 기본 서비스 계정을 만듭니다. 기본 서비스 계정이 생성되면 프로젝트에 대한 편집자 역할(roles/editor)이 자동으로 부여됩니다.

보안을 강화하려면 자동 역할 부여를 사용 중지하는 것이 좋습니다. iam.automaticIamGrantsForDefaultServiceAccounts 부울 제약조건을 사용하여 자동 역할 부여를 사용 중지합니다.

서비스 계정 생성 사용 중지

iam.disableServiceAccountCreation 부울 제약조건을 사용하여 새로운 서비스 계정 생성을 사용 중지할 수 있습니다. 이렇게 하면 개발자가 프로젝트에 대해 갖는 다른 권한을 제한하지 않으면서 서비스 계정을 중앙에서 관리할 수 있습니다.

서비스 계정 키 생성 사용 중지

iam.disableServiceAccountKeyCreation 부울 제약조건을 사용하여 새로운 외부 서비스 계정 키 생성을 사용 중지할 수 있습니다. 이렇게 하면 서비스 계정에 대한 장기 비관리 사용자 인증 정보의 사용을 제어할 수 있습니다. 이 제약조건이 설정되면 제약조건의 영향을 받는 프로젝트에서 서비스 계정에 대해 사용자 관리 사용자 인증 정보를 만들 수 없습니다.

서비스 계정 키 업로드 사용 중지

iam.disableServiceAccountKeyUpload 부울 제약 조건을 사용하여 서비스 계정에 외부 공개 키 업로드를 사용 중지할 수 있습니다. 이 제약 조건이 설정되면 사용자는 제약 조건의 영향을 받는 프로젝트의 서비스 계정에 공개 키를 업로드할 수 없습니다.

워크로드 아이덴티티 클러스터 생성 사용 중지

iam.disableWorkloadIdentityClusterCreation 부울 제약조건을 사용하여 새 Google Kubernetes Engine 클러스터가 생성될 때 워크로드 아이덴티티 기능의 사용 중지를 요청할 수 있습니다. 조직에서 서비스 계정 액세스를 엄격하게 제어하려면 서비스 계정 생성 및 서비스 계정 키 생성 외에도 워크로드 아이덴티티를 사용 중지할 수 있습니다.

워크로드 아이덴티티가 사용 설정된 기존 GKE는 영향을 받지 않으며 계속 정상적으로 작동합니다.

부울 제약조건 설정

콘솔

서비스 계정 사용을 제한하는 제약조건을 포함한 조직 정책을 설정하는 방법은 다음과 같습니다.

  1. Google Cloud Console의 조직 정책 페이지로 이동합니다.

    조직 정책 페이지로 이동

  2. 페이지 상단의 조직 드롭다운 목록을 클릭한 다음 조직을 선택합니다.
  3. 위에 나열된 서비스 계정 사용 부울 제약조건 중 하나를 클릭합니다.
  4. 수정 버튼을 클릭합니다.
  5. 적용 대상에서 맞춤설정을 선택합니다.
  6. 시행에서 사용을 선택합니다.
  7. 저장을 클릭합니다. 정책이 업데이트되었음을 확인하는 알림이 나타납니다.

gcloud

정책은 gcloud 명령줄 도구를 통해 설정할 수 있습니다.

서비스 계정 사용을 제한하려면 다음 명령어를 실행합니다.

gcloud resource-manager org-policies enable-enforce \
    --organization 'ORGANIZATION_ID' \
    BOOLEAN_CONSTRAINT

여기서 BOOLEAN_CONSTRAINT는 시행할 부울 제약조건입니다.

정책을 중지하려면 동일한 명령어를

disable-enforce
명령어와 함께 사용하면 됩니다.

조직 정책의 제약조건을 사용하는 방법은 제약조건 사용을 참조하세요.

부울 제약조건이 있는 정책 예시

다음 코드 스니펫은 iam.disableServiceAccountCreation 부울 제약조건을 적용하는 조직 정책을 보여줍니다. 이러한 정책은 서비스 계정이 생성되지 않도록 합니다.

resource: "organizations/842463781240"
policy {
  constraint: "constraints/iam.disableServiceAccountCreation"
  etag: "\a\005L\252\122\321\946\334"
  boolean_policy {
  enforced: true
  }
}

목록 제약조건

다음 제약조건은 목록 제약조건의 유형이며 true 또는 false로 설정됩니다.

OAuth 2.0 액세스 토큰의 수명 연장

서비스 계정에 단기 사용자 인증 정보를 제공하는 OAuth 2.0 액세스 토큰을 만들 수 있습니다. 기본적으로 액세스 토큰의 최대 수명은 1시간(3,600초)입니다. 그러나 최대 수명을 12시간으로 연장할 수 있습니다. 이렇게 하려면 토큰의 수명을 연장해야 할 서비스 계정을 식별한 다음 constraints/iam.allowServiceAccountCredentialLifetimeExtension 목록 제약조건을 포함하는 조직 정책에 이러한 서비스 계정을 추가합니다.

목록 제약조건 설정

콘솔

서비스 계정용 OAuth 2.0 액세스 토큰의 최대 수명을 연장하는 조직 정책을 설정하려면 다음 안내를 따르세요.

  1. Google Cloud Console의 조직 정책 페이지로 이동합니다.

    조직 정책 페이지로 이동

  2. 페이지 상단의 조직 드롭다운 목록을 클릭한 후 조직을 선택합니다.
  3. constraints/iam.allowServiceAccountCredentialLifetimeExtension 제약조건을 클릭합니다.
  4. 수정 버튼을 클릭합니다.
  5. 적용 대상에서 맞춤설정을 선택합니다.
  6. 정책 시행에서 상위 요소와 병합을 선택하여 이 정책을 계층 구조의 기존 정책과 병합합니다.
  7. 정책 값에서 커스텀을 선택합니다.
  8. 정책 유형에서 허용을 선택합니다.
  9. 커스텀 값 아래에 OAuth 2.0 액세스 토큰의 수명을 연장할 서비스 계정의 이메일 주소를 입력합니다.
    1. 계정 주소를 더 추가하려면 새 정책 값을 클릭하여 추가 행을 만들고 각 행에 주소를 하나씩 추가합니다.
  10. 저장을 클릭합니다. 정책이 업데이트되었음을 확인하는 알림이 표시됩니다.

gcloud

정책은 gcloud 명령줄 도구를 통해 설정할 수 있습니다.

서비스 계정용 OAuth 2.0 액세스 토큰의 최대 수명을 연장하는 조직 정책을 설정하려면 다음 명령어를 실행합니다.

gcloud resource-manager org-policies allow \
    constraints/iam.allowServiceAccountCredentialLifetimeExtension \
    SERVICE_ACCOUNT_ADDRESS [SERVICE_ACCOUNT_ADDRESS ...] \
    --organization 'ORGANIZATION_ID' \

여기서 SERVICE_ACCOUNT_ADDRESS는 수명 연장된 액세스 토큰을 제공할 서비스 계정의 이메일 주소 목록입니다.

조직 정책의 제약조건을 사용하는 방법은 제약조건 사용을 참조하세요.

목록 제약조건이 있는 정책 예시

다음 코드 스니펫은 iam.allowServiceAccountCredentialLifetimeExtension 목록 제약조건을 시행하여 나열된 서비스 계정용 OAuth 2.0 액세스 토큰의 최대 수명을 연장하는 조직 정책을 보여줍니다.

resource: "organizations/842463781240"
policy {
  constraint: "constraints/iam.allowServiceAccountCredentialLifetimeExtension"
  etag: "\a\005L\252\122\321\946\334"
  listPolicy {
    allowedValues:
      - <var>SERVICE_ACCOUNT_ADDRESS</var>
  }
  updateTime: <var>CURRENT_TIME</var>
}

오류 메시지

서비스 계정 생성 사용 중지

iam.disableServiceAccountCreation이 시행되면 서비스 계정 생성은 다음 오류가 표시되며 실패합니다.

FAILED_PRECONDITION: Service account creation is not allowed on this project.

서비스 계정 키 생성 사용 중지

iam.disableServiceAccountKeyCreation이 시행되면 서비스 계정 생성은 다음 오류가 표시되며 실패합니다.

FAILED_PRECONDITION: Key creation is not allowed on this service account.

워크로드 아이덴티티 클러스터 생성 사용 중지

iam.disableWorkloadIdentityClusterCreation이 시행되면 워크로드 아이덴티티가 사용 설정된 GKE 클러스터의 생성이 다음 오류와 함께 실패합니다.

FAILED_PRECONDITION: Workload Identity is disabled by the organization
policy constraints/iam.disableWorkloadIdentityClusterCreation. Contact your
administrator to enable this feature.

알려진 문제 해결

기본 서비스 계정

iam.disableServiceAccountCreation 제약조건을 적용하면 해당 프로젝트에서 서비스 계정을 만들 수 없습니다. 이 제한사항은 사용 설정 시 프로젝트에서 자동으로 기본 서비스 계정을 생성하는 다음과 같은 Google Cloud 서비스에도 영향을 줍니다.

  • Compute Engine
  • GKE
  • App Engine
  • Dataflow

iam.disableServiceAccountCreation 제약조건이 적용되면 기본 서비스 계정을 생성할 수 없으므로 이러한 서비스를 사용 설정할 수 없습니다.

이 문제를 해결하려면 다음 단계를 따르세요.

  1. iam.disableServiceAccountCreation 제약조건을 삭제합니다.
  2. 원하는 서비스를 사용 설정합니다.
  3. 원하는 서비스 계정을 만듭니다.
  4. 마지막으로 제약조건을 다시 적용합니다.