서비스 계정 키 생성 및 관리

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

이 가이드의 선행 조건

필수 권한

사용자가 서비스 계정 키를 관리할 수 있도록 서비스 계정 키 관리자 역할(roles/iam.serviceAccountKeyAdmin)을 부여합니다. Cloud IAM 기본 역할도 서비스 계정 키를 관리하는 권한을 포함하지만, 다른 GCP 리소스에 불필요하게 액세스하지 못하도록 이 역할을 대신 부여하는 것이 좋습니다.

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

서비스 계정 키 만들기

Google Cloud Platform 외부, 즉 다른 플랫폼이나 온프레미스에서 서비스 계정을 사용하려면 서비스 계정의 신원을 입증해 합니다. 공개 키/비공개 키 쌍이 여기에 사용됩니다.

serviceAccounts.keys.create() 메소드, GCP 콘솔, gcloud 도구를 사용하여 서비스 계정 키를 만들 수 있습니다.

아래 예에서 SA-NAME은 서비스 계정의 이름이고 PROJECT-ID는 Google Cloud Platform 프로젝트의 ID입니다. Google Cloud Platform 콘솔의 서비스 계정 페이지에서 SA-NAME@PROJECT-ID.iam.gserviceaccount.com 문자열을 검색할 수 있습니다.

gcloud

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

gcloud iam service-accounts keys create ~/key.json \
    --iam-account SA-NAME@PROJECT-ID.iam.gserviceaccount.com

이 명령의 출력은 다음과 유사합니다.

created key [e44da1202f82f8f4bdd9d92bc412d1d8a837fa83] of type [json] as
[/usr/home/username/key.json] for
[SA-NAME@PROJECT-ID.iam.gserviceaccount.com]

API

요청:

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

응답:

{
    "name":"projects/PROJECT-ID/serviceAccounts/SA-NAME@PROJECT-ID.iam.gserviceaccount.com/keys/90c48f61c65cd56224a12ab18e6ee9ca9c3aee7c",
    "privateKeyType": "TYPE_GOOGLE_CREDENTIALS_FILE",
    "privateKeyData":"MIIJqAIB . . .",
    "validBeforeTime": "2028-05-08T21:00:00Z",
    "validAfterTime": "2016-01-25T18:38:09.000Z",
    "keyAlgorithm": "KEY_ALG_RSA_2048"
}

콘솔

  1. GCP 콘솔에서 IAM 및 관리자 페이지를 엽니다.

    IAM 및 관리자 페이지 열기

  2. 프로젝트를 선택한 다음 계속을 클릭합니다.

  3. 왼쪽 탐색 메뉴에서 서비스 계정을 클릭합니다.

  4. 키를 만들 서비스 계정을 찾아서 해당 행의 세로 줄임표 버튼을 클릭하고 키 만들기를 클릭합니다.

  5. 키 유형을 선택하고 만들기를 클릭합니다.

반환되는 privateKeyData는 JSON 또는 P12 키/사용자 인증 정보의 base64 인코딩 문자열 표현입니다.

키를 만들면 공개 키/비공개 키 쌍이 새로 생성되어 컴퓨터로 다운로드되며, 이 파일이 비공개 키의 유일한 사본입니다. 비공개 키를 안전하게 보관할 책임은 사용자에게 있습니다. 파일 위치를 잘 기록해 두고 애플리케이션에서 액세스할 수 있도록 조치하세요. 인증된 API 호출을 수행하려면 이 키가 필요합니다.

모든 서비스 계정의 모든 공개 키는 누구나 공개적으로 액세스할 수 있으며 비공개 키로 생성한 서명을 검증하는 데 사용하도록 제공됩니다. 다음 URL에서 공개 키에 공개적으로 액세스할 수 있습니다.

  • x.509 인증서: https://www.googleapis.com/service_accounts/v1/metadata/x509/SA-NAME@PROJECT-ID.iam.gserviceaccount.com
  • JSON 웹 키(JWK): https://www.googleapis.com/service_accounts/v1/jwk/SA-NAME@PROJECT-ID.iam.gserviceaccount.com
  • RAW 엔드포인트: https://www.googleapis.com/service_accounts/v1/metadata/raw/SA-NAME@PROJECT-ID.iam.gserviceaccount.com

서비스 계정 키 나열

serviceAccount.keys.list() 메소드, GCP 콘솔, gcloud 도구를 사용하여 서비스 계정의 서비스 계정 키를 나열할 수 있습니다.

serviceAccount.keys.list() 메소드의 일반적인 용도는 서비스 계정 및 키를 감사하거나 서비스 계정을 관리하는 커스텀 도구를 만드는 것입니다.

특정 키가 속한 프로젝트를 확인하려는 경우 키를 JSON 파일로 다운로드한 후 해당 파일을 조사할 수 있습니다.

직접 만들지 않은 키가 나열될 수 있습니다. 이러한 키는 GCP에서 관리하는 키로서 App Engine, Compute Engine 등의 GCP 서비스에 사용됩니다. 사용자가 관리하는 키와 GCP에서 관리하는 키의 차이점에 대한 자세한 내용은 서비스 계정 이해를 참조하세요.

gcloud

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

gcloud iam service-accounts keys list \
    --iam-account SA-NAME@PROJECT-ID.iam.gserviceaccount.com

이 명령의 출력은 다음과 유사합니다.

KEY_ID CREATED_AT EXPIRES_AT
8e6e3936d7024646f8ceb39792006c07f4a9760c 2016-01-26T21:01:42.000Z 2026-01-23T21:01:42.000Z
937c98f870f5c8db970af527aa3c12fd88b1c20a 2016-01-26T20:55:40.000Z 2026-01-23T20:55:40.000Z

API

요청:

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

응답:

{
    "keys": [
    {
        "name": "projects/PROJECT-ID/serviceAccounts/SA-NAME@PROJECT-ID.iam.gserviceaccount.com/keys/90c48f61c65cd56224a12ab18e6ee9ca9c3aee7c",
        "validAfterTime": "2016-01-25T18:38:09.000Z",
        "validBeforeTime": "2026-01-22T18:38:09.000Z",
        "keyAlgorithm": "KEY_ALG_RSA_2048"
    },
    {
        "name": "projects/PROJECT-ID/serviceAccounts/SA-NAME@PROJECT-ID.iam.gserviceaccount.com/keys/e5e3800831ac1adc8a5849da7d827b4724b1fce8",
        "validAfterTime": "2016-01-25T13:43:27.000Z",
        "validBeforeTime": "2016-01-26T13:43:27.000Z",
        "keyAlgorithm": "KEY_ALG_RSA_2048"
    },
    {
        "name": "projects/PROJECT-ID/serviceAccounts/SA-NAME@PROJECT-ID.iam.gserviceaccount.com/keys/b97699f042b8eee6a846f4f96259fbcd13e2682e",
        "validAfterTime": "2016-01-26T13:28:27.000Z",
        "validBeforeTime": "2016-01-27T13:28:27.000Z",
        "keyAlgorithm": "KEY_ALG_RSA_2048"
    }]
}

콘솔

  1. GCP 콘솔에서 IAM 및 관리자 페이지를 엽니다.

    IAM 및 관리자 페이지 열기

  2. 프로젝트를 선택한 다음 계속을 클릭합니다.

  3. 왼쪽 탐색 메뉴에서 서비스 계정을 클릭합니다. 모든 서비스 계정과 해당 키가 나열됩니다.

서비스 계정 키 삭제

serviceAccount.keys.delete() 메소드, GCP 콘솔, gcloud 도구를 사용하여 서비스 계정 키를 삭제할 수 있습니다.

키를 삭제하면 애플리케이션에서 더 이상 해당 키를 사용하여 Cloud Platform 리소스에 액세스할 수 없습니다. 보안을 위해 서비스 계정 키를 정기적으로 순환하는 방법이 권장됩니다. 키를 순환하려면 새 키를 만들고 애플리케이션에서 새 키를 사용하도록 전환한 후 이전 키를 삭제합니다. serviceAccount.keys.create() 메소드와 serviceAccount.keys.delete() 메소드를 함께 사용하면 순환을 자동화할 수 있습니다.

gcloud

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

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

이 명령의 출력은 다음과 유사합니다.

deleted key [8e6e3936d7024646f8ceb39792006c07f4a9760c] for
service account [SA-NAME@PROJECT-ID.iam.gserviceaccount.com]

API

요청:

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

콘솔

  1. GCP 콘솔에서 IAM 및 관리자 페이지를 엽니다.

    IAM 및 관리자 페이지 열기

  2. 프로젝트를 선택한 다음 계속을 클릭합니다.

  3. 왼쪽 탐색 메뉴에서 서비스 계정을 클릭합니다. 모든 서비스 계정과 해당 키가 나열됩니다.

  4. 삭제할 서비스 계정 키에 마우스를 가져갑니다. 삭제 아이콘을 클릭하여 해당 키를 삭제합니다.

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

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

Cloud ID 및 액세스 관리 문서