사용되지 않는 서비스 계정 찾기

이 페이지에서는 서비스 계정 통계를 관리하는 방법을 보여줍니다. 이 통계는 프로젝트에서 이전 90일 동안 사용되지 않은 서비스 계정에 대한 발견 항목입니다.

시작하기 전에

  • Enable the Recommender API.

    Enable the API

  • 선택사항: 추천자 통계를 읽습니다.

필요한 역할

서비스 계정 통계를 관리하는 데 필요한 권한을 얻으려면 관리자에게 통계를 관리할 프로젝트에 대한 다음의 IAM 역할을 부여해 달라고 요청하세요.

역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

이러한 사전 정의된 역할에는 서비스 계정 통계를 관리하는 데 필요한 권한이 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.

필수 권한

서비스 계정 통계를 관리하려면 다음 권한이 필요합니다.

  • 서비스 계정 통계 보기:
    • recommender.iamServiceAccountinsights.get
    • recommender.iamServiceAccountinsights.list
  • 서비스 계정 통계 수정: recommender.iamServiceAccountinsights.update

커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.

서비스 계정 통계 나열

프로젝트의 모든 서비스 계정 통계를 나열하려면 다음 메서드 중 하나를 사용하세요.

gcloud

gcloud recommender insights list 명령어를 사용하여 프로젝트의 모든 서비스 계정 통계를 확인합니다.

명령어를 실행하기 전에 다음 값을 바꿉니다.

  • PROJECT_ID: 통계를 나열하려는 프로젝트의 ID입니다.
gcloud recommender insights list --insight-type=google.iam.serviceAccount.Insight \
    --project=PROJECT_ID \
    --location=global

프로젝트에 대한 모든 서비스 계정 통계가 출력에 나열됩니다. 예를 들면 다음과 같습니다.

INSIGHT_ID                            CATEGORY  INSIGHT_STATE  LAST_REFRESH_TIME     SEVERITY  INSIGHT_SUBTYPE        DESCRIPTION
446303ba-2a14-49cc-b9fa-e2d2499d4f82  SECURITY  ACTIVE         2022-05-24T07:00:00Z  LOW       SERVICE_ACCOUNT_USAGE  Service account sa-1@my-project.iam.gserviceaccount.com was inactive.
4cfd82c3-7320-4dc6-9b67-ca0756bbd54c  SECURITY  ACTIVE         2022-05-24T07:00:00Z  LOW       SERVICE_ACCOUNT_USAGE  Service account sa-2@my-project.iam.gserviceaccount.com was inactive.
a627bed7-c8f4-4611-89c9-2a9a8618ca1b  SECURITY  ACTIVE         2022-05-24T07:00:00Z  LOW       SERVICE_ACCOUNT_USAGE  Service account sa-3@my-project.iam.gserviceaccount.com was inactive.
a922dd59-df0a-422d-a2a4-096195e1dae5  SECURITY  ACTIVE         2022-05-24T07:00:00Z  LOW       SERVICE_ACCOUNT_USAGE  Service account sa-4@my-project.iam.gserviceaccount.com was inactive.

REST

Recommender API의 insights.list 메서드는 프로젝트의 모든 서비스 계정 통계를 나열합니다.

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

  • PROJECT_ID: 통계를 나열하려는 프로젝트의 ID입니다.

HTTP 메서드 및 URL:

GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/global/insightTypes/google.iam.serviceAccount.Insight/insights

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

응답에 프로젝트에 대한 모든 서비스 계정 통계가 나열됩니다. 예를 들면 다음과 같습니다.

{
  "insights": [
    {
      "name": "projects/123456789012/locations/global/insightTypes/google.iam.serviceAccount.Insight/insights/446303ba-2a14-49cc-b9fa-e2d2499d4f82",
      "description": "Service account sa-1@my-project.iam.gserviceaccount.com was inactive.",
      "content": {
        "serviceAccountId": "103185812403937829397",
        "email": "sa-1@my-project.iam.gserviceaccount.com",
        "lastAuthenticatedTime": "2020-09-11T07:00:00Z"
      },
      "lastRefreshTime": "2022-05-24T07:00:00Z",
      "observationPeriod": "19008000s",
      "stateInfo": {
        "state": "ACTIVE"
      },
      "category": "SECURITY",
      "targetResources": [
        "//cloudresourcemanager.googleapis.com/projects/123456789012"
      ],
      "insightSubtype": "SERVICE_ACCOUNT_USAGE",
      "etag": "\"9d797dd04263c855\"",
      "severity": "LOW"
    },
    {
      "name": "projects/123456789012/locations/global/insightTypes/google.iam.serviceAccount.Insight/insights/4cfd82c3-7320-4dc6-9b67-ca0756bbd54c",
      "description": "Service account sa-2@my-project.iam.gserviceaccount.com was inactive.",
      "content": {
        "serviceAccountId": "105496400997178042131",
        "email": "sa-2@my-project.iam.gserviceaccount.com"
      },
      "lastRefreshTime": "2022-05-24T07:00:00Z",
      "observationPeriod": "16070400s",
      "stateInfo": {
        "state": "ACTIVE"
      },
      "category": "SECURITY",
      "targetResources": [
        "//cloudresourcemanager.googleapis.com/projects/123456789012"
      ],
      "insightSubtype": "SERVICE_ACCOUNT_USAGE",
      "etag": "\"783a32b635d79a4e\"",
      "severity": "LOW"
    }
  ]
}

통계 구성요소에 대한 자세한 설명은 이 페이지의 서비스 계정 통계 검토를 참조하세요.

단일 서비스 계정 통계 가져오기

통계 설명, 상태, 관련 권장사항을 포함하여 단일 통계에 대한 자세한 내용을 보려면 다음 메서드 중 하나를 사용하세요.

gcloud

통계 ID와 함께 gcloud recommender insights describe 명령어를 사용하여 단일 통계에 대한 정보를 확인합니다.

  • INSIGHT_ID: 보려는 통계의 ID입니다. ID를 찾으려면 프로젝트의 통계를 나열하세요.
  • PROJECT_ID: 통계를 관리하려는 프로젝트의 ID입니다.
gcloud recommender insights describe INSIGHT_ID \
    --insight-type=google.iam.serviceAccount.Insight \
    --project=PROJECT_ID \
    --location=global

출력에 통계가 자세히 표시됩니다. 예를 들어 다음 통계는 2020년 10월 11일 이후에 서비스 계정 sa-1@my-project.iam.gserviceaccount.com이 인증되지 않았음을 나타냅니다.

category: SECURITY
content:
  email: sa-1@my-project.iam.gserviceaccount.com
  lastAuthenticatedTime: '2020-10-11T07:00:00Z'
  serviceAccountId: '103185812403937829397'
description: Service account sa-1@my-project.iam.gserviceaccount.com
  was inactive.
etag: '"9d797dd04263c855"'
insightSubtype: SERVICE_ACCOUNT_USAGE
lastRefreshTime: '2022-05-24T07:00:00Z'
name: projects/123456789012/locations/global/insightTypes/google.iam.serviceAccount.Insight/insights/446303ba-2a14-49cc-b9fa-e2d2499d4f82
observationPeriod: 19008000s
severity: LOW
stateInfo:
  state: ACTIVE
targetResources:
- //cloudresourcemanager.googleapis.com/projects/123456789012

통계 구성요소에 대한 자세한 설명은 이 페이지의 서비스 계정 통계 검토를 참조하세요.

REST

Recommender API의 insights.get 메서드는 단일 통계를 가져옵니다.

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

  • PROJECT_ID: 통계를 관리하려는 프로젝트의 ID입니다.
  • INSIGHT_ID: 보려는 통계의 ID입니다. 통계 ID를 모르는 경우 프로젝트의 통계를 나열하여 찾을 수 있습니다. 통계 ID는 통계의 name 필드에서 insights/ 다음에 오는 모든 문자입니다.

HTTP 메서드 및 URL:

GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/global/insightTypes/google.iam.serviceAccount.Insight/insights/INSIGHT_ID

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

응답에 통계가 포함됩니다. 예를 들어 다음 통계는 2020년 10월 11일 이후에 서비스 계정 sa-1@my-project.iam.gserviceaccount.com이 인증되지 않았음을 나타냅니다.

{
  "name": "projects/123456789012/locations/global/insightTypes/google.iam.serviceAccount.Insight/insights/446303ba-2a14-49cc-b9fa-e2d2499d4f82",
  "description": "Service account sa-1@my-project.iam.gserviceaccount.com was inactive.",
  "content": {
    "serviceAccountId": "103185812403937829397",
    "email": "sa-1@my-project.iam.gserviceaccount.com",
    "lastAuthenticatedTime": "2020-09-11T07:00:00Z"
  },
  "lastRefreshTime": "2022-05-24T07:00:00Z",
  "observationPeriod": "19008000s",
  "stateInfo": {
    "state": "ACTIVE"
  },
  "category": "SECURITY",
  "targetResources": [
    "//cloudresourcemanager.googleapis.com/projects/123456789012"
  ],
  "insightSubtype": "SERVICE_ACCOUNT_USAGE",
  "etag": "\"9d797dd04263c855\"",
  "severity": "LOW"
}

통계 구성요소에 대한 자세한 설명은 이 페이지의 서비스 계정 통계 검토를 참조하세요.

서비스 계정 통계 검토

단일 통계를 가져온 후 콘텐츠를 검토하여 강조표시되는 리소스 사용량 패턴을 파악할 수 있습니다.

통계의 콘텐츠는 하위유형에 따라 결정됩니다. 서비스 계정 통계(google.iam.serviceAccount.Insight)의 통계에는 SERVICE_ACCOUNT_USAGE 하위유형이 있습니다.

SERVICE_ACCOUNT_USAGE 통계에는 다음과 같은 구성요소가 있습니다(순서는 다름).

  • associatedRecommendations: 통계와 연결된 모든 권장사항의 식별자입니다. 통계와 연결된 권장사항이 없으면 이 필드는 비어 있습니다.
  • category: IAM 통계의 카테고리는 항상 SECURITY입니다.
  • content: 서비스 계정이 마지막으로 인증된 시간을 보고합니다. 이 필드에는 다음 구성요소가 포함됩니다.

    • email: 서비스 계정의 이메일 주소입니다.
    • lastAuthenticatedTime: 서비스 계정이 인증된 가장 최근 시간입니다. 서비스 계정에 기록된 인증이 없으면 이 필드가 포함되지 않습니다.
    • serviceAccountId: 서비스 계정의 고유 숫자 ID입니다.
  • description: 인간이 읽을 수 있는 통계 요약입니다.
  • etag: 통계의 현재 상태에 대한 고유 식별자입니다. 통계가 변경될 때마다 새 etag 값이 할당됩니다.

    통계 상태를 변경하려면 기존 통계의 etag를 제공해야 합니다. etag를 사용하면 마지막으로 검색한 후 통계가 변경되지 않은 경우에만 작업이 수행됩니다.

  • insightSubtype: 통계 하위유형입니다.
  • lastRefreshTime: 통계가 마지막으로 갱신된 날짜로, 통계를 생성하는 데 사용된 데이터의 최신 상태를 나타냅니다.
  • name: 다음 형식의 통계 이름입니다.

    projects/PROJECT_ID/locations/global/insightTypes/google.iam.serviceAccount.Insight/insights/INSIGHT_ID

    자리표시자의 값은 다음과 같습니다.

    • PROJECT_ID: 통계가 생성된 프로젝트의 ID입니다.
    • INSIGHT_ID: 통계의 고유 ID입니다.
  • observationPeriod: 통계까지 이어지는 기간입니다. 통계를 생성하는 데 사용되는 소스 데이터는 lastRefreshTime에 종료되며 lastRefreshTime에서 observationPeriod를 뺀 시간에 시작합니다.
  • stateInfo: 통계는 제안된 후 여러 상태로 전환됩니다.

    • ACTIVE: 통계가 생성되지만 작업이 수행되지 않았거나 통계의 상태를 업데이트하지 않고 작업이 수행되었습니다. 활성 통계는 기본 데이터가 변경되면 업데이트됩니다.
    • ACCEPTED: 통계를 기반으로 몇몇 작업이 실행되었습니다. 통계가 수락되는 것은 관련 권장사항이 CLAIMED, SUCCEEDED 또는 FAILED로 표시되었거나 통계가 직접 수락된 경우입니다. 통계 상태가 ACCEPTED일 때는 통계 내용을 변경할 수 없습니다. 수락된 통계는 수락된 날로부터 90일 동안 보관됩니다.
  • targetResources: 통계의 대상인 프로젝트의 전체 리소스 이름입니다. 예를 들면 //cloudresourcemanager.googleapis.com/projects/123456789012입니다.

서비스 계정 통계를 ACCEPTED로 표시

활성 통계를 기반으로 작업을 수행하는 경우 통계를 ACCEPTED로 표시할 수 있습니다. ACCEPTED 상태는 이 통계를 기반으로 작업을 수행했음을 Recommender API에 알려주므로 권장사항을 개선하는 데 도움이 됩니다.

허용된 통계는 ACCEPTED로 표시된 후 90일 동안 보관됩니다.

gcloud

통계 ID와 함께 gcloud recommender insights mark-accepted 명령어를 사용하여 통계를 ACCEPTED로 표시합니다.

  • INSIGHT_ID: 보려는 통계의 ID입니다. ID를 찾으려면 프로젝트의 통계를 나열하세요.
  • PROJECT_ID: 통계를 관리하려는 프로젝트의 ID입니다.
  • ETAG: 통계 버전의 식별자입니다. etag를 가져오려면 다음 안내를 따르세요.

    1. gcloud recommender insights describe 명령어를 사용하여 통계를 가져옵니다.
    2. 출력에서 etag 값(큰따옴표 포함)을 찾아 복사합니다. 예를 들면 "d3cdec23cc712bd0"입니다.
gcloud recommender insights mark-accepted INSIGHT_ID \
    --insight-type=google.iam.serviceAccount.Insight \
    --project=PROJECT_ID \
    --location=global \
    --etag=ETAG

출력에 ACCEPTED 상태와 함께 통계가 표시됩니다.

category: SECURITY
content:
  email: sa-1@my-project.iam.gserviceaccount.com
  lastAuthenticatedTime: '2020-10-11T07:00:00Z'
  serviceAccountId: '103185812403937829397'
description: Service account sa-1@my-project.iam.gserviceaccount.com
  was inactive.
etag: '"39c4199dcec92848"'
insightSubtype: SERVICE_ACCOUNT_USAGE
lastRefreshTime: '2022-05-24T07:00:00Z'
name: projects/123456789012/locations/global/insightTypes/google.iam.serviceAccount.Insight/insights/446303ba-2a14-49cc-b9fa-e2d2499d4f82
observationPeriod: 19008000s
severity: LOW
stateInfo:
  state: ACCEPTED
targetResources:
- //cloudresourcemanager.googleapis.com/projects/123456789012

통계의 상태 정보에 대한 상세 설명은 이 페이지의 서비스 계정 통계 검토를 참조하세요.

REST

Recommender API의 insights.markAccepted 메서드는 통계를 ACCEPTED로 표시합니다.

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

  • PROJECT_ID: 통계를 관리하려는 프로젝트의 ID입니다.
  • INSIGHT_ID: 보려는 통계의 ID입니다. 통계 ID를 모르는 경우 프로젝트의 통계를 나열하여 찾을 수 있습니다. 통계 ID는 통계의 name 필드에서 insights/ 다음에 오는 모든 문자입니다.
  • ETAG: 통계 버전의 식별자입니다. etag를 가져오려면 다음을 실행합니다.
    1. insights.get 메서드를 사용하여 통계를 가져옵니다.
    2. 응답에서 etag 값을 찾아서 복사합니다.

HTTP 메서드 및 URL:

POST https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/global/insightTypes/google.iam.serviceAccount.Insight/insights/INSIGHT_ID:markAccepted

JSON 요청 본문:

{
  "etag": "ETAG"
}

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

응답에 통계가 포함됩니다. 이제 상태가 ACCEPTED입니다.

{
  "name": "projects/123456789012/locations/global/insightTypes/google.iam.serviceAccount.Insight/insights/446303ba-2a14-49cc-b9fa-e2d2499d4f82",
  "description": "Service account sa-1@my-project.iam.gserviceaccount.com was inactive.",
  "content": {
    "serviceAccountId": "103185812403937829397",
    "email": "sa-1@my-project.iam.gserviceaccount.com",
    "lastAuthenticatedTime": "2020-10-11T07:00:00Z"
  },
  "lastRefreshTime": "2022-05-24T07:00:00Z",
  "observationPeriod": "19008000s",
  "stateInfo": {
    "state": "ACCEPTED"
    },
  "category": "SECURITY",
  "targetResources": [
    "//cloudresourcemanager.googleapis.com/projects/123456789012"
  ],
  "insightSubtype": "SERVICE_ACCOUNT_USAGE",
  "etag": "\"39c4199dcec92848\"",
  "severity": "LOW"
}

통계의 상태 정보에 대한 상세 설명은 이 페이지의 서비스 계정 통계 검토를 참조하세요.

다음 단계