서비스 계정 및 키 사용 모니터링

이 페이지에서는 Cloud Monitoring을 사용하여 서비스 계정 및 서비스 계정 키가 사용된 시기를 확인하는 방법을 설명합니다. 이 정보를 추적하면 더 이상 사용하지 않는 서비스 계정 및 키를 식별하는 데 도움이 됩니다.

Google Cloud에 포함되지 않은 API를 포함하여 Google API를 호출하는 데 사용되는 서비스 계정 및 서비스 계정 키는 이 측정항목에 표시됩니다. 측정항목에는 성공한 API 호출과 실패한 API 호출이 모두 포함됩니다. 예를 들어 호출자에게 API를 호출할 수 있는 권한이 없거나 요청이 존재하지 않는 리소스를 참조하기 때문에 API 호출이 실패한 경우, 이 API 호출에 사용된 서비스 계정 또는 키는 측정항목에 표시됩니다.

Monitoring은 서비스 계정 측정항목을 제한된 기간 동안 보관합니다. 더 오랜 기간 동안 데이터에 액세스해야 하는 경우 주기적으로 결과를 BigQuery로 내보낼 수 있습니다. 자세한 내용은 솔루션 문서의 Monitoring 측정항목 내보내기를 참조하세요.

시작하기 전에

프로젝트에 Monitoring을 사용하려면 프로젝트를 모니터링 작업공간에 추가해야 합니다. 작업공간에 프로젝트를 추가하려면 새 작업공간을 만들거나 기존 작업공간에 프로젝트를 추가합니다.

사용 측정항목 보기

서비스 계정 또는 서비스 계정 키를 사용하면 보통 몇 분 이내에 사용 측정항목을 사용할 수 있습니다.

서비스 계정 및 서비스 계정 키의 사용 측정항목을 보려면 다음 단계를 따르세요.

Console

  1. Cloud Console에서 측정항목 탐색기 페이지로 이동합니다.

    측정항목 탐색기 페이지로 이동

  2. 리소스 유형 및 측정항목 찾기 필드에서 리소스 유형을 IAM 서비스 계정으로 설정하고 측정항목을 다음 값 중 하나로 설정합니다.
    • 서비스 계정 사용 측정항목의 경우 인증 이벤트를 선택합니다.
    • 서비스 계정 키 사용 측정항목의 경우 키 인증 이벤트를 선택합니다.
  3. 그래프의 설정을 조정합니다.
    • 그래프 위의 간격 목록에서 확인할 시간 간격을 선택합니다. 사전 정의된 간격 중 하나를 선택하거나 커스텀을 클릭하고 시작 및 종료 시간을 선택하여 커스텀 간격을 설정할 수 있습니다.
    • 또는 누적 막대를 도표 유형으로 선택합니다.

이러한 측정항목은 선택한 기간 중의 각 서비스 계정 또는 서비스 계정 키 사용 정보를 보여줍니다.

REST

Cloud Monitoring API의 timeSeries.list 메서드를 사용하면 프로그래매틱 방식으로 사용 측정항목에 액세스할 수 있습니다.

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

  • project-id: Google Cloud 프로젝트 ID
  • metric-type: 확인할 측정항목 유형. 다음 중 한 가지 값을 사용합니다.
    • 서비스 계정 사용 측정항목의 경우 iam.googleapis.com%2Fservice_account%2Fauthn_events_count를 사용합니다.
    • 서비스 계정 키 사용 측정항목의 경우 iam.googleapis.com%2Fservice_account%2Fkey%2Fauthn_events_count를 사용합니다.
  • end-time: 확인할 기간의 종료 시간이며, 백분율로 인코딩된 RFC 3339 형식입니다. 예를 들면 2020-06-12T00%3A00%3A00.00Z입니다.
  • start-time: 확인할 기간의 시작 시간으로, 백분율로 인코딩된 RFC 3339 형식입니다. 예를 들면 2020-04-12T00%3A00%3A00.00Z입니다.

HTTP 메서드 및 URL:

GET https://monitoring.googleapis.com/v3/projects/project-id/timeSeries?filter=metric.type%3D%22metric-type%22&interval.endTime=end-time&interval.startTime=start-time

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

프로그래매틱 방식 측정항목 읽기에 대한 자세한 내용은 Monitoring 문서의 측정항목 데이터 읽기를 참조하세요.

사용하지 않는 서비스 계정 및 키 확인

서비스 계정 및 서비스 계정 키 사용 측정항목을 사용하면 더 이상 사용하지 않는 서비스 계정 및 서비스 계정 키를 확인할 수 있습니다. 사용하지 않는 서비스 계정 및 키는 불필요한 보안 위험을 야기할 수 있으므로 사용 중지하거나 삭제하는 것이 좋습니다.

단일 서비스 계정의 최근 사용 확인

서비스 계정을 마지막으로 사용한 시간을 찾으려면 다음 단계를 따르세요.

Console

  1. 서비스 계정의 고유 숫자 ID를 찾아 복사합니다.

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

      서비스 계정 페이지로 이동

    2. 서비스 계정이 포함된 프로젝트를 선택합니다.

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

    4. 고유 ID 필드에서 서비스 계정의 고유 숫자 ID를 복사합니다.

  2. Cloud Console에서 측정항목 탐색기 페이지로 이동합니다.

    측정항목 탐색기 페이지로 이동

  3. 리소스 유형 및 측정항목 찾기 필드에서 리소스 유형을 IAM 서비스 계정으로 설정하고 측정항목을 인증 이벤트로 설정합니다.

  4. 필터 필드에서 unique_id를 선택하고 서비스 계정의 고유 숫자 ID를 붙여넣습니다.

  5. 그래프를 쉽게 읽을 수 있도록 도표 유형으로 또는 누적 막대를 선택합니다.

그래프의 최근 인증 이벤트는 서비스 계정이 마지막으로 사용된 시기를 보여줍니다.

REST

Cloud Monitoring API의 timeSeries.list 메서드를 특정 필터와 함께 사용하면 단일 서비스 계정의 사용 측정항목을 가져올 수 있습니다. 그런 다음 이러한 측정항목을 사용하여 계정이 마지막으로 사용된 시점을 확인할 수 있습니다.

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

  • project-id: Google Cloud 프로젝트 ID
  • service-account-id: 서비스 계정의 고유 숫자 ID. 서비스 계정의 고유 숫자 ID를 찾으려면 다음 단계를 따르세요.
    1. Cloud Console에서 서비스 계정 페이지로 이동합니다.

      서비스 계정 페이지로 이동
    2. 서비스 계정의 이메일 주소를 클릭합니다. 서비스 계정의 고유 숫자 ID는 고유 ID 필드의 값입니다.
  • end-time: 확인할 기간의 종료 시간이며, 백분율로 인코딩된 RFC 3339 형식입니다. 예를 들면 2020-06-12T00%3A00%3A00.00Z입니다.
  • start-time: 확인할 기간의 시작 시간으로, 백분율로 인코딩된 RFC 3339 형식입니다. 예를 들면 2020-04-12T00%3A00%3A00.00Z입니다.

HTTP 메서드 및 URL:

GET https://monitoring.googleapis.com/v3/projects/project-id/timeSeries?filter=metric.type%3D%22iam.googleapis.com%2Fservice_account%2Fauthn_events_count%22%20AND%20resource.labels.unique_id%3D%22service-account-id%22&interval.endTime=end-time&interval.startTime=start-time

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

응답에는 지정된 서비스 계정의 최근 인증 이벤트를 모두 포함한 timeSeries 객체가 포함됩니다. 이 timeSeries 객체를 사용하여 서비스 계정이 마지막으로 사용된 시기를 확인할 수 있습니다.

단일 서비스 계정 키의 최근 사용 확인

서비스 계정 키가 마지막으로 사용된 시간을 찾으려면 키의 고유 ID를 찾아서 복사한 다음 해당 ID를 사용하여 키의 사용 측정항목을 찾습니다.

JSON 키 파일이 있는 경우 파일의 private_key_id 필드에서 서비스 계정 키의 고유 ID를 찾을 수 있습니다.

JSON 키 파일이 없는 경우 다음 단계에 따라 서비스 계정 키의 고유 ID를 찾을 수 있습니다.

Console

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

    서비스 계정 페이지로 이동

    1. 키와 연결된 서비스 계정이 포함된 프로젝트를 선택합니다.
    2. 키와 연결된 서비스 계정의 이메일 주소를 클릭합니다.
    3. 페이지의 섹션을 찾은 다음 키 ID 목록에서 키 ID를 찾아 복사합니다.

gcloud

  1. gcloud iam service-accounts keys list 명령어를 실행합니다. 여기서 [SERVICE_ACCOUNT_EMAIL]은 키가 연결된 서비스 계정의 이메일 주소로 바꿉니다.

    gcloud iam service-accounts keys list --iam-account=service-account-email
    

    출력에는 각 키의 고유 ID, 생성 시간, 만료 시간을 포함하여 서비스 계정과 관련된 모든 사용자 생성 키 목록이 표시됩니다.

  2. 출력의 데이터를 사용하여 추적할 키를 식별하고 고유 ID를 복사합니다.

REST

  1. 서비스 계정 키를 나열합니다.

    projects.serviceAccounts.keys.list 메서드는 서비스 계정의 모든 서비스 계정 키를 나열합니다.

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

    • project-id: Google Cloud 프로젝트 ID입니다.
    • sa-name: 키를 나열하려는 서비스 계정의 이름입니다.
    • key-types: 선택사항. 응답에 포함할 키 유형의 쉼표로 구분된 목록입니다. 키 유형은 키가 사용자 관리(USER_MANAGED)인지 시스템 관리(SYSTEM_MANAGED)인지를 나타냅니다. 비워두면 모든 키가 반환됩니다.

    HTTP 메서드 및 URL:

    GET https://iam.googleapis.com/v1/projects/project-id/serviceAccounts/sa-name@project-id.iam.gserviceaccount.com/keys?keyTypes=key-types

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

    다음과 비슷한 JSON 응답이 표시됩니다.

    {
      "keys": [
        {
          "name": "projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com/keys/90c48f61c65cd56224a12ab18e6ee9ca9c3aee7c",
          "validAfterTime": "2020-03-04T17:39:47Z",
          "validBeforeTime": "9999-12-31T23:59:59Z",
          "keyAlgorithm": "KEY_ALG_RSA_2048",
          "keyOrigin": "GOOGLE_PROVIDED",
          "keyType": "USER_MANAGED"
        },
        {
          "name": "projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com/keys/e5e3800831ac1adc8a5849da7d827b4724b1fce8",
          "validAfterTime": "2020-03-31T23:50:09Z",
          "validBeforeTime": "9999-12-31T23:59:59Z",
          "keyAlgorithm": "KEY_ALG_RSA_2048",
          "keyOrigin": "GOOGLE_PROVIDED",
          "keyType": "USER_MANAGED"
        },
        {
          "name": "projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com/keys/b97699f042b8eee6a846f4f96259fbcd13e2682e",
          "validAfterTime": "2020-05-17T18:58:13Z",
          "validBeforeTime": "9999-12-31T23:59:59Z",
          "keyAlgorithm": "KEY_ALG_RSA_2048",
          "keyOrigin": "GOOGLE_PROVIDED",
          "keyType": "USER_MANAGED"
        }
      ]
    }
    

  2. 응답의 메타데이터를 사용하여 추적할 키를 식별합니다. 그런 다음 name 필드 끝에서 키의 고유 ID를 복사합니다.

    name 필드의 형식은 다음과 같습니다.

    "name": "projects/project-id/serviceAccounts/service-account-email/keys/key-id"
    

    키의 고유 ID는 keys/ 이후의 모든 문자입니다.

    예를 들어 다음 키 이름의 고유 ID는 0f561cc41650ff521899de2fd653bd3de08e2da4입니다.

    "name": "projects/my-project/serviceAccounts/my-account@my-project.iam.gserviceaccount.com/keys/0f561cc41650ff521899de2fd653bd3de08e2da4"
    

서비스 계정 키의 사용 측정항목을 찾으려면 다음 단계를 따르세요.

Console

  1. Cloud Console에서 측정항목 탐색기 페이지로 이동합니다.

    측정항목 탐색기 페이지로 이동

  2. 리소스 유형 및 측정항목 찾기 필드에서 리소스 유형을 IAM 서비스 계정으로 설정하고 측정항목을 키 인증 이벤트을 선택합니다.

  3. 필터 필드에서 keyid를 선택하고 서비스 계정 키의 고유 ID를 입력합니다.

  4. 그래프를 쉽게 읽을 수 있도록 도표 유형으로 또는 누적 막대를 선택합니다.

그래프의 최근 인증 이벤트는 서비스 계정 키가 마지막으로 사용된 시기를 보여줍니다.

REST

Cloud Monitoring API의 timeSeries.list 메서드를 특정 필터와 함께 사용하면 단일 서비스 계정 키의 사용 측정항목을 가져올 수 있습니다. 그런 다음 이러한 측정항목을 사용하여 키가 마지막으로 사용된 시점을 확인할 수 있습니다.

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

  • project-id: Google Cloud 프로젝트 ID
  • key-id: 서비스 계정 키의 고유 ID.
  • end-time: 확인할 기간의 종료 시간이며, 백분율로 인코딩된 RFC 3339 형식입니다. 예를 들면 2020-06-12T00%3A00%3A00.00Z입니다.
  • start-time: 확인할 기간의 시작 시간으로, 백분율로 인코딩된 RFC 3339 형식입니다. 예를 들면 2020-04-12T00%3A00%3A00.00Z입니다.

HTTP 메서드 및 URL:

GET https://monitoring.googleapis.com/v3/projects/project-id/timeSeries?filter=metric.type%3D%22iam.googleapis.com%2Fservice_account%2Fkey%2Fauthn_events_count%22%20AND%20metric.labels.key_id%3D%22key-id%22&interval.endTime=end-time&interval.startTime=start-time

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

응답에는 지정된 서비스 계정 키의 최근 인증 이벤트를 모두 포함한 timeSeries 객체가 포함됩니다. 이 timeSeries 객체를 사용하여 서비스 계정 키가 마지막으로 사용된 시기를 확인할 수 있습니다.

측정항목 내보내기

Monitoring을 사용하여 측정항목을 BigQuery로 내보낼 수 있습니다. Monitoring은 제한된 기간 동안의 측정항목만 보관하므로 장기 분석을 수행할 때 측정항목 내보내기가 유용합니다.

자세한 내용은 솔루션 문서의 Monitoring 측정항목 내보내기를 참조하세요.

다음 단계