서비스 계정 생성 및 관리

이 페이지에서는 Google Cloud ID 및 액세스 관리 API, Google Cloud Platform 콘솔, gcloud 명령줄 도구를 사용하여 서비스 계정을 만들고 관리하는 방법을 설명합니다.

새 Cloud 프로젝트를 만들면 Google Cloud Platform에서 자동으로 해당 프로젝트에 Compute Engine 서비스 계정 하나와 App Engine 서비스 계정 하나를 만듭니다. 프로젝트에 서비스 계정을 추가로 98개까지 만들어 리소스에 대한 액세스를 제어할 수 있습니다.

시작하기 전에

필수 권한

사용자가 서비스 계정을 관리할 수 있도록 다음 역할 중 하나를 부여합니다.

  • 서비스 계정 사용자(roles/iam.serviceAccountUser): 서비스 계정을 가져오거나, 나열하거나, 가장할 권한을 부여합니다.
  • 서비스 계정 관리자 (roles/iam.serviceAccountAdmin): 서비스 계정 사용자 권한에 더하여 서비스 계정에서 Cloud IAM 정책을 만들거나, 삭제하거나 ,설정하거나, 가져올 권한을 부여합니다.

Cloud IAM 기본 역할도 서비스 계정을 관리하는 권한을 포함하지만, 다른 GCP 리소스에 불필요하게 액세스하지 못하도록 사전 정의된 위 역할 중 하나를 부여하는 것이 좋습니다.

서비스 계정과 관련된 역할에 대한 자세한 내용은 서비스 계정 역할을 참조하세요.

서비스 계정 만들기

서비스 계정 만들기는 프로젝트에 구성원을 추가하는 것과 비슷하지만, 서비스 계정은 개별 최종 사용자가 아니라 애플리케이션에 속합니다.

아래 예에서 SA-NAME은 서비스 계정의 이름입니다. 이 이름은 고유 식별자로서 서비스 계정의 이메일 주소에 표시되며, 다른 API와 함께 이 이름을 사용하여 서비스 계정을 업데이트합니다. SA-DISPLAY-NAME는 서비스 계정의 별칭입니다. PROJECT-ID는 Google Cloud Platform 프로젝트의 ID입니다.

서비스 계정을 만들려면 사용자에게 최소한 서비스 계정 관리자 역할(roles/iam.serviceAccountAdmin) 또는 편집자 기본 역할(roles/editor)이 부여되어야 합니다.

gcloud

서비스 계정을 만들려면 다음 명령을 실행합니다.

gcloud iam service-accounts create SA-NAME \
    --display-name "SA-DISPLAY-NAME"

이 명령을 실행하면 서비스 계정이 출력되며, 다음과 비슷한 내용입니다.

Created service account SA-NAME.

API

서비스 계정을 만들려면 serviceAccounts.create() 메소드를 호출합니다.

POST https://iam.googleapis.com/v1/projects/PROJECT-ID/serviceAccounts

요청 본문은 새 서비스 계정을 만드는 속성을 포함해야 합니다. 새 서비스 계정의 ID와 표시 이름을 제공하면 됩니다. ID는 서비스 계정 이메일 주소를 만드는 데 사용됩니다. 서비스 계정의 표시 이름은 이후에 수정할 수 있지만, 서비스 계정 ID는 생성 후 수정할 수 없습니다.

    {
        "accountId": "SA-NAME",
        "serviceAccount": {
            "displayName": "SA-DISPLAY-NAME",
        }
    }

응답:

    {
        "name": "projects/PROJECT-ID/serviceAccounts/SA-NAME@PROJECT-ID.iam.gserviceaccount.com",
        "projectId": "PROJECT-ID",
        "uniqueId": "113948692397867021414",
        "email": "SA-NAME@PROJECT-ID.iam.gserviceaccount.com",
        "displayName": "SA-DISPLAY-NAME",
        "etag": "BwUp3rVlzes=",
        "oauth2ClientId": "117249000288840666939"
    }

콘솔

  1. GCP 콘솔에서 서비스 계정 페이지를 엽니다.

    서비스 계정 페이지 열기

  2. 프로젝트 선택을 클릭합니다.

  3. 프로젝트를 선택한 다음 열기를 클릭합니다.
  4. 서비스 계정 만들기를 클릭합니다.
  5. 서비스 계정 이름을 입력하고 서비스 계정에 부여할 역할을 선택한 다음 만들기를 클릭합니다.

서비스 계정을 만든 후 사용자 대신 작동할 수 있도록 서비스 계정에 하나 이상의 역할을 부여합니다.

서비스 계정 나열

서비스 계정을 나열할 때 매개변수를 지정하여 응답에 포함할 서비스 계정 수를 제한할 수 있습니다. 그런 다음 이후 요청에서 ListServiceAccountsResponse.next_page_token을 사용하여 나머지 서비스 계정을 나열하도록 요청할 수 있습니다.

이 메소드의 용도는 서비스 계정 및 키를 감사하거나 서비스 계정을 관리하는 커스텀 도구를 만드는 것입니다.

서비스 계정을 나열하려면 사용자에게 최소한 서비스 계정 사용자 역할(roles/iam.serviceAccountUser) 또는 뷰어 기본 역할(roles/viewer)이 부여되어야 합니다.

gcloud

서비스 계정을 나열하려면 다음 명령을 실행합니다.

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

API

serviceAccounts.list() 메소드를 사용하여 특정 프로젝트에 속한 모든 서비스 계정을 나열합니다. serviceAccounts.get() 메소드를 사용하여 단일 서비스 계정에 대한 세부정보를 가져올 수도 있습니다.

요청:

GET https://iam.googleapis.com/v1/projects/PROJECT-ID/serviceAccounts

응답:

{
    "accounts": [
    {
        "name": "projects/PROJECT-ID/serviceAccounts/SA-NAME-1@PROJECT-ID.iam.gserviceaccount.com",
        "projectId": "PROJECT-ID",
        "uniqueId": "108979773878059201436",
        "email": "SA-NAME-1@PROJECT-ID.iam.gserviceaccount.com",
        "displayName": "SA-DISPLAY-NAME-1",
        "etag": "BwUpTsLVUkQ=",
        "oauth2ClientId": "102240834887833340852"
    },
    {
        "name": "projects/PROJECT-ID/serviceAccounts/SA-NAME-2@PROJECT-ID.iam.gserviceaccount.com",
        "projectId": "PROJECT-ID",
        "uniqueId": "108979773878059201436",
        "email": "SA-NAME-2@PROJECT-ID.iam.gserviceaccount.com",
        "displayName": "SA-DISPLAY-NAME-2",
        "etag": "BwUpTsLVUkQ=",
        "oauth2ClientId": "102240834887833340852"
    }]
}

콘솔

  1. GCP 콘솔에서 서비스 계정 페이지를 엽니다.

    서비스 계정 페이지 열기

  2. 프로젝트 선택을 클릭합니다.

  3. 프로젝트를 선택한 다음 열기를 클릭합니다. 서비스 계정 페이지에 모든 서비스 계정이 나열됩니다.

서비스 계정 이름 바꾸기

서비스 계정 표시 이름의 일반적인 용도는 서비스 계정의 목적이나 계정의 연락처와 같은 추가 기타 정보를 표현하는 것입니다.

서비스 계정의 이름을 바꾸려면 사용자에게 최소한 서비스 계정 관리자 역할(roles/iam.serviceAccountAdmin) 또는 편집자 기본 역할(roles/editor)이 부여되어야 합니다.

gcloud

서비스 계정의 이름을 바꾸는 방법은 다음과 같습니다.

gcloud iam service-accounts update \
    SA-NAME@PROJECT-ID.iam.gserviceaccount.com \
    --display-name "Updated display name"

이 명령을 실행하면 이름이 변경된 서비스 계정이 출력되며, 내용은 다음과 유사합니다.

    displayName: Updated display name
    email: SA-NAME@PROJECT-ID.iam.gserviceaccount.com
    etag: BwUqQpHDCw8=
    name: projects/PROJECT-ID/serviceAccounts/SA-NAME@PROJECT-ID.iam.gserviceaccount.com
    oauth2ClientId: '112984177383228986143'
    projectId: PROJECT-ID
    uniqueId: '112984177383228986143'

API

serviceAccounts.update() 메소드를 사용하여 기존 서비스 계정의 표시 이름을 수정합니다.

요청:

PUT https://iam.googleapis.com/v1/projects/PROJECT-ID/serviceAccounts/SA-NAME@PROJECT-ID.iam.gserviceaccount.com

요청 본문은 새 표시 이름, 프로젝트 ID, 서비스 계정의 고유 ID, 서비스 계정 이메일을 포함해야 합니다.

{
    "displayName":"Updated display name",
    "etag":"BwUpVKjgNtE=",
    "projectId":"PROJECT-ID",
    "uniqueId":"107522985251862639552",
    "email":"SA-NAME@PROJECT-ID.iam.gserviceaccount.com",
}

응답:

{
    "name": "projects/PROJECT-ID/serviceAccounts/SA-NAME@PROJECT-ID.iam.gserviceaccount.com",
    "projectId": "PROJECT-ID",
    "uniqueId": "107522985251862639552",
    "email": "SA-NAME@PROJECT-ID.iam.gserviceaccount.com",
    "displayName": "Updated display name",
    "etag": "BwUqLK4bL9U=",
    "oauth2ClientId": "105236325228757713905"
}

콘솔

  1. GCP 콘솔에서 서비스 계정 페이지를 엽니다.

    서비스 계정 페이지 열기

  2. 프로젝트 선택을 클릭합니다.
  3. 프로젝트를 선택한 다음 열기를 클릭합니다.
  4. 이름을 바꿀 서비스 계정을 찾아서 해당 행의 세로 줄임표 버튼을 클릭하고 수정을 클릭합니다.
  5. 새 이름을 입력하고 저장을 클릭합니다.

서비스 계정 삭제

서비스 계정을 삭제하면 애플리케이션에서 해당 서비스 계정을 통해 Google Cloud Platform 리소스에 더 이상 액세스할 수 없습니다. 기본 App Engine 및 Compute Engine 서비스 계정을 삭제하려는 경우 충분한 주의가 필요합니다. 서비스 계정을 삭제하기 전에 중요한 애플리케이션에서 해당 계정을 더 이상 사용하지 않는지 확인해야 합니다.

서비스 계정을 삭제하려면 사용자에게 최소한 서비스 계정 관리자 역할(roles/iam.serviceAccountAdmin) 또는 편집자 기본 역할(roles/editor)이 부여되어야 합니다.

gcloud

서비스 계정을 삭제하려면 다음 명령을 실행합니다.

gcloud iam service-accounts delete \
    SA-NAME@PROJECT-ID.iam.gserviceaccount.com

이 명령을 실행하면 다음과 유사한 메시지가 출력됩니다.

deleted service account SA-NAME@PROJECT-ID.iam.gserviceaccount.com

API

serviceAccounts.delete() 메소드를 사용하여 기존 서비스 계정을 삭제할 수 있습니다.

DELETE https://iam.googleapis.com/v1/projects/PROJECT-ID/serviceAccounts/SA-NAME@PROJECT-ID.iam.gserviceaccount.com

콘솔

  1. GCP 콘솔에서 서비스 계정 페이지를 엽니다.

    서비스 계정 페이지 열기

  2. 프로젝트 선택을 클릭합니다.

  3. 프로젝트를 선택한 다음 열기를 클릭합니다.
  4. 삭제할 서비스 계정을 선택하고 삭제를 클릭합니다.

다음 단계

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

Cloud ID 및 액세스 관리 문서