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

서비스 계정과 관련 CLI

by BTC_.tf 2023. 6. 9.

베하! 다들 즐거운 한주 보내셨나요.

다가올 주말이 기대되네요. 포스팅 시작하겠습니다.


서비스 계정(Service Account)은 일반적으로 사용자가 아닌 Compute Engine 인스턴스와 같은 애플리케이션 또는 컴퓨팅 워크로드에서 사용하는 특별한 유형의 계정입니다. 서비스 계정은 계정 고유의 이메일 주소로 식별됩니다.

애플리케이션은 서비스 계정을 사용해 인증된 API 호출을 수행합니다.

애플리케이션이 서비스 계정으로 인증되면 서비스 계정에 액세스 권한이 있는 모든 리소스에 액세스할 수 있습니다.

 

서비스 계정은 크게 3가지로 나뉩니다.

사용자 관리 서비스 계정 : 사용자가 만들고 관리하는 서비스 계정입니다. 이러한 서비스 계정은 종종 워크로드의 ID로 사용됩니다.

기본 서비스 계정 : 사용자 관리 서비스 계정이며, 특정 Google Cloud 서비스를 사용 설정(Enable)할 때 자동으로 생성됩니다. 이러한 서비스 계정을 사용하면 서비스가 다른 Google Cloud 리소스에 Access하는 작업을 배포할 수 있습니다. 기본 서비스 계정을 만든 후에는 사용자가 직접 관리해야 하기 때문에 생성 이후의 프로세스는 사용자의 책임입니다.

애플리케이션이 기본 서비스 계정이 있는 Google Cloud 환경에서 실행되는 경우, 애플리케이션은 기본 서비스 계정의 사용자 인증 정보를 사용하여 Google Cloud API를 호출할 수 있습니다. 기본 서비스 계정을 만드는 서비스는 App Engine 및 App Engine을 사용하는 모든 서비스, Compute Engine 및 Compute Engine을 사용하는 모든 서비스 등이 있습니다. 이메일 주소는 {project-id}@appspot.gserviceaccount.com, {project-number}-compute@developer.gserviceaccount.com 등이 있습니다.

Google 관리 서비스 계정 : Google에서 만든 Google 관리 서비스 계정이며, 서비스가 사용자를 대신하여 리소스에 액세스하도록 허용합니다.

Google 관리 서비스 계정의 예로는 Google API 서비스 에이전트, 기타 서비스 에이전트, Google 관리 서비스 계정의 역할 관리자 등이 있습니다.

Google API 서비스 에이전트는 {project-number}@cloudservices.gserviceaccount.com 형식, 기타 서비스 에이전트는 일반적으로 serviceAgent 형식으로 끝납니다.

 

서비스 계정에 대한 권한CLI를 알아볼까요?

 

서비스 계정을 생성하기 위해선 roles/iam.serviceAccountCreator 권한이 필요합니다. 이렇게 만든 서비스 계정에 대한 Access 권한을 부여하기 위해선 roles/resourcemanager.projectIamAdmin 권한이 필요합니다.

아래는 gcloud CLI로 서비스 계정을 생성하는 명령어입니다.

gcloud iam service-accounts create SA_NAME \
    --description="DESCRIPTION" \
    --display-name="DISPLAY_NAME"

아래는 gcloud CLI로 서비스 계정에 권한(Role)을 부여하는 명령어입니다.

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com" \
    --role="ROLE_NAME"

 

서비스 계정을 확인하기 위해선 roles/iam.serviceAccountViewer 권한이 필요합니다.

아래는 gcloud CLI로 서비스 계정의 나열(List)을 확인하는 명령어입니다.

gcloud iam service-accounts list

명령어 실행시 아래와 같이 출력됩니다.

NAME                    EMAIL
SA_DISPLAY_NAME_1    SA_NAME_1@PROJECT_ID.iam.gserviceaccount.com
SA_DISPLAY_NAME_2    SA_NAME_2@PROJECT_ID.iam.gserviceaccount.com

 

서비스 계정을 편집과 중지 및 활성화를 하기 위해선 roles/iam.serviceAccountAdmin 권한이 필요합니다.

아래는 gcloud CLI로 서비스 계정을 편집하는 명령어입니다.

gcloud iam service-accounts update \
    SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
    --description="UPDATED_SA_DESCRIPTION" \
    --display-name="UPDATED_DISPLAY_NAME"

아래는 gcloud CLI로 서비스 계정을 중지하는 명령어입니다.

gcloud iam service-accounts disable SA_NAME@PROJECT_ID.iam.gserviceaccount.com

아래는 gcloud CLI로 중지된 서비스 계정을 활성화시키는 명령입니다.

gcloud iam service-accounts enable SA_NAME@PROJECT_ID.iam.gserviceaccount.com

 

서비스 계정을 삭제하기 위해선 roles/iam.serviceAccountDeleter 권한이 필요합니다.

아래는 gcloud CLI로 서비스 계정을 삭제시키는 명령어입니다.

gcloud iam service-accounts delete \
    SA_NAME@PROJECT_ID.iam.gserviceaccount.com

 

어떠셨나요. GCP의 서비스 계정, 처음에는 어렵지만 보면 볼수록, 쓰면 쓸수록 재밌는 개념입니다.

다들 GCP의 매력에 푹 빠져보세요.

 

이번 포스팅은 여기까지! 베빠!

댓글