์„œ๋น„์Šค ๊ณ„์ • ๋ฐ ํ‚ค์˜ ์ตœ๊ทผ ์‚ฌ์šฉ๋Ÿ‰ ๋ณด๊ธฐ

์ด ํŽ˜์ด์ง€์—์„œ๋Š” ํ™œ๋™ ๋ถ„์„๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋น„์Šค ๊ณ„์ • ๋ฐ ํ‚ค๊ฐ€ Google API ํ˜ธ์ถœ์— ๋งˆ์ง€๋ง‰์œผ๋กœ ์‚ฌ์šฉ๋œ ์‹œ๊ฐ„์„ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ด ๊ฐ™์€ ์‚ฌ์šฉ์„ ์ธ์ฆ ํ™œ๋™์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

์ตœ๊ทผ ์ธ์ฆ ํ™œ๋™์€ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์„œ๋น„์Šค ๊ณ„์ • ๋ฐ ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์„œ๋น„์Šค ๊ณ„์ • ๋ฐ ํ‚ค๋Š” ๋ถˆํ•„์š”ํ•œ ๋ณด์•ˆ ์œ„ํ—˜์„ ์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์‚ฌ์šฉ ์ค‘์ง€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๊ธฐ ์ „์—

ํ•„์š”ํ•œ ์—ญํ• 

์„œ๋น„์Šค ๊ณ„์ • ๋ฐ ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค์˜ ์ตœ์‹  ์ธ์ฆ ํ™œ๋™์„ ๋‚˜์—ดํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ถŒํ•œ์„ ์–ป์œผ๋ ค๋ฉด ๊ด€๋ฆฌ์ž์—๊ฒŒ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ํ™œ๋™ ๋ถ„์„ ๋ทฐ์–ด(roles/policyanalyzer.activityAnalysisViewer) IAM ์—ญํ• ์„ ๋ถ€์—ฌํ•ด ๋‹ฌ๋ผ๊ณ  ์š”์ฒญํ•˜์„ธ์š”. ์—ญํ•  ๋ถ€์—ฌ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ”„๋กœ์ ํŠธ, ํด๋”, ์กฐ์ง์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ด€๋ฆฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ด ์‚ฌ์ „ ์ •์˜๋œ ์—ญํ• ์—๋Š” ์„œ๋น„์Šค ๊ณ„์ • ๋ฐ ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค์— ๋Œ€ํ•ด ์ตœ๊ทผ ์ธ์ฆ ํ™œ๋™์„ ๋‚˜์—ดํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ถŒํ•œ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ์ •ํ™•ํ•œ ๊ถŒํ•œ์„ ๋ณด๋ ค๋ฉด ํ•„์ˆ˜ ๊ถŒํ•œ ์„น์…˜์„ ํŽผ์น˜์„ธ์š”.

ํ•„์ˆ˜ ๊ถŒํ•œ

์„œ๋น„์Šค ๊ณ„์ • ๋ฐ ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค์— ๋Œ€ํ•ด ์ตœ๊ทผ ์ธ์ฆ ํ™œ๋™์„ ๋‚˜์—ดํ•˜๋ ค๋ฉด ๋‹ค์Œ ๊ถŒํ•œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • policyanalyzer.serviceAccountKeyLastAuthenticationActivities.query
  • policyanalyzer.serviceAccountLastAuthenticationActivities.query

์ปค์Šคํ…€ ์—ญํ• ์ด๋‚˜ ๋‹ค๋ฅธ ์‚ฌ์ „ ์ •์˜๋œ ์—ญํ• ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๊ถŒํ•œ์„ ๋ถ€์—ฌ๋ฐ›์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ์„œ๋น„์Šค ๊ณ„์ • ๋˜๋Š” ํ‚ค์˜ ์ตœ๊ทผ ์‚ฌ์šฉ ๋ณด๊ธฐ

๋ชจ๋“  ์„œ๋น„์Šค ๊ณ„์ • ๋˜๋Š” ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค์— ๋Œ€ํ•œ ์ตœ๊ทผ ์ธ์ฆ ํ™œ๋™ ๋‚ ์งœ๋ฅผ ๋‚˜์—ดํ•˜๋ ค๋ฉด Google Cloud CLI ๋˜๋Š” REST API๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

gcloud

์„œ๋น„์Šค ๊ณ„์ • ๋˜๋Š” ํ‚ค์˜ ์ตœ๊ทผ ์ธ์ฆ ํ™œ๋™์„ ๋‚˜์—ดํ•˜๋ ค๋ฉด gcloud policy-intelligence query-activity ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

gcloud policy-intelligence query-activity --activity-type=ACTIVITY_TYPE \
    --project=PROJECT_ID --limit=LIMIT

๋‹ค์Œ ๊ฐ’์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • ACTIVITY_TYPE: ๋‚˜์—ดํ•  ํ™œ๋™ ์œ ํ˜•์ž…๋‹ˆ๋‹ค. ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ตœ๊ทผ ์‚ฌ์šฉ ์‹œ๊ฐ„์„ ๋‚˜์—ดํ•˜๋ ค๋ฉด serviceAccountLastAuthentication์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค์˜ ์ตœ๊ทผ ์‚ฌ์šฉ ์‹œ๊ฐ„์„ ๋‚˜์—ดํ•˜๋ ค๋ฉด serviceAccountKeyLastAuthentication์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • PROJECT_ID: Google Cloud ํ”„๋กœ์ ํŠธ ID. ํ”„๋กœ์ ํŠธ ID๋Š” my-project ๊ฐ™์€ ์˜์ˆซ์ž ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
  • LIMIT: ์„ ํƒ์‚ฌํ•ญ. ๋ฐ˜ํ™˜๋  ์ตœ๋Œ€ ๊ฒฐ๊ณผ ์ˆ˜์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ 1000์ž…๋‹ˆ๋‹ค.

์‘๋‹ต์€ ๋‹ค์Œ๊ณผ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ๋Š” ํ”„๋กœ์ ํŠธ ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ตœ๊ทผ ์‚ฌ์šฉ ์‹œ๊ฐ„์ด ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค.

---
activity:
  lastAuthenticatedTime: '2021-04-27T07:00:00Z'
  serviceAccount:
    fullResourceName: //iam.googleapis.com/projects/my-project/serviceAccounts/service-account-1@my-project.iam.gserviceaccount.com
    projectNumber: '123456789012'
    serviceAccountId: '123456789012345678901'
activityType: serviceAccountLastAuthentication
fullResourceName: //iam.googleapis.com/projects/my-project/serviceAccounts/service-account-1@my-project.iam.gserviceaccount.com
observationPeriod:
  endTime: '2021-07-06T07:00:00Z'
  startTime: '2020-03-12T07:00:00Z'
---
activity:
  lastAuthenticatedTime: '2021-02-09T08:00:00Z'
  serviceAccount:
    fullResourceName: //iam.googleapis.com/projects/my-project/serviceAccounts/service-account-2@my-project.iam.gserviceaccount.com
    projectNumber: '123456789012'
    serviceAccountId: '234567890123456789012'
activityType: serviceAccountLastAuthentication
fullResourceName: //iam.googleapis.com/projects/my-project/serviceAccounts/service-account-2@my-project.iam.gserviceaccount.com
observationPeriod:
  endTime: '2021-07-06T07:00:00Z'
  startTime: '2020-09-01T07:00:00Z'

์ด๋Ÿฌํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์ด ํŽ˜์ด์ง€์˜ ํ™œ๋™ ์ดํ•ด๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

REST

์„œ๋น„์Šค ๊ณ„์ • ๋˜๋Š” ํ‚ค์˜ ์ตœ์‹  ์ธ์ฆ ํ™œ๋™์„ ๋‚˜์—ดํ•˜๋ ค๋ฉด Policy Analyzer API์˜ activities.query ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • PROJECT_ID: Google Cloud ํ”„๋กœ์ ํŠธ ID. ํ”„๋กœ์ ํŠธ ID๋Š” my-project ๊ฐ™์€ ์˜์ˆซ์ž ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
  • ACTIVITY_TYPE: ๋‚˜์—ดํ•  ํ™œ๋™ ์œ ํ˜•์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ตœ๊ทผ ์‚ฌ์šฉ์„ ๋‚˜์—ดํ•˜๋ ค๋ฉด serviceAccountLastAuthentication์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค์˜ ์ตœ๊ทผ ์‚ฌ์šฉ์„ ๋‚˜์—ดํ•˜๋ ค๋ฉด serviceAccountKeyLastAuthentication์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • PAGE_SIZE: ์„ ํƒ์‚ฌํ•ญ. ์ด ์š”์ฒญ์—์„œ ๋ฐ˜ํ™˜ํ•  ์ตœ๋Œ€ ๊ฒฐ๊ณผ ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์„œ๋ฒ„์—์„œ ๋ฐ˜ํ™˜ํ•  ๊ฒฐ๊ณผ ์ˆ˜๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ํ™œ๋™ ์ˆ˜๊ฐ€ ํŽ˜์ด์ง€ ํฌ๊ธฐ๋ณด๋‹ค ํฌ๋ฉด ์‘๋‹ต์— ๋‹ค์Œ ๊ฒฐ๊ณผ ํŽ˜์ด์ง€๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํŽ˜์ด์ง€ ๋‚˜๋ˆ„๊ธฐ ํ† ํฐ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
  • PAGE_TOKEN: ์„ ํƒ์‚ฌํ•ญ. ์ด ๋ฉ”์„œ๋“œ์˜ ์ด์ „ ์‘๋‹ต์—์„œ ๋ฐ˜ํ™˜๋œ ํŽ˜์ด์ง€ ๋‚˜๋ˆ„๊ธฐ ํ† ํฐ์ž…๋‹ˆ๋‹ค. ์ง€์ •๋œ ๊ฒฝ์šฐ ์ด์ „ ์‘๋‹ต์ด ์ข…๋ฃŒ๋œ ์œ„์น˜์—์„œ ํ™œ๋™ ๋ชฉ๋ก์ด ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.

HTTP ๋ฉ”์„œ๋“œ ๋ฐ URL:

GET https://policyanalyzer.googleapis.com/v1/projects/PROJECT_ID/locations/global/activityTypes/ACTIVITY_TYPE/activities:query?pageSize=PAGE_SIZE&pageToken=PAGE_TOKEN

์š”์ฒญ์„ ๋ณด๋‚ด๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ํŽผ์นฉ๋‹ˆ๋‹ค.

์‘๋‹ต์€ ๋‹ค์Œ๊ณผ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ๋Š” ํ”„๋กœ์ ํŠธ ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ตœ๊ทผ ์‚ฌ์šฉ ์‹œ๊ฐ„์ด ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค.

{
  "activities": [
    {
      "fullResourceName": "//iam.googleapis.com/projects/my-project/serviceAccounts/service-account-1@my-project.iam.gserviceaccount.com",
      "activityType": "serviceAccountLastAuthentication",
      "observationPeriod": {
        "startTime": "2020-04-20T07:00:00Z",
        "endTime": "2021-05-17T07:00:00Z"
      },
      "activity": {
        "lastAuthenticatedTime": "2021-04-28T07:00:00Z",
        "serviceAccount": {
          "projectNumber": "123456789012",
          "fullResourceName": "//iam.googleapis.com/projects/my-project/serviceAccounts/service-account-1@my-project.iam.gserviceaccount.com",
          "serviceAccountId": "123456789012345678901"
        }
      }
    },
    {
      "fullResourceName": "//iam.googleapis.com/projects/my-project/serviceAccounts/service-account-2@my-project.iam.gserviceaccount.com",
      "activityType": "serviceAccountLastAuthentication",
      "observationPeriod": {
        "startTime": "2020-04-20T07:00:00Z",
        "endTime": "2021-05-17T07:00:00Z"
      },
      "activity": {
        "lastAuthenticatedTime": "2021-04-29T07:00:00Z",
        "serviceAccount": {
          "projectNumber": "123456789012",
          "fullResourceName": "//iam.googleapis.com/projects/my-project/serviceAccounts/service-account-2@my-project.iam.gserviceaccount.com",
          "serviceAccountId": "234567890123456789012"
        }
      }
    }
  ],
  "nextPageToken": "AVgRrQV4b5nISN6cGJvTPFJ2v_"
}

์ด๋Ÿฌํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์ด ํŽ˜์ด์ง€์˜ ํ™œ๋™ ์ดํ•ด๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

ํŠน์ • ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ตœ๊ทผ ์‚ฌ์šฉ ๋ณด๊ธฐ

ํŠน์ • ์„œ๋น„์Šค ๊ณ„์ •์ด ๋งˆ์ง€๋ง‰์œผ๋กœ ์‚ฌ์šฉ๋œ ๋‚ ์งœ๋ฅผ ์ฐพ์œผ๋ ค๋ฉด Google Cloud ์ฝ˜์†”, gcloud CLI ๋˜๋Š” REST API๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ ์ •์ฑ… ๋ถ„์„ ๋„๊ตฌ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    ์ •์ฑ… ๋ถ„์„ ๋„๊ตฌ๋กœ ์ด๋™

  2. ์ตœ๊ทผ ํ™œ๋™ ๋ถ„์„์—์„œ ์ด ์„œ๋น„์Šค ๊ณ„์ •์ด ๋งˆ์ง€๋ง‰์œผ๋กœ ์‚ฌ์šฉ๋œ ์‹œ๊ธฐ๋Š” ์–ธ์ œ์ธ๊ฐ€์š”?๋ผ๋Š” ๋ผ๋ฒจ์ด ์ง€์ •๋œ ์ฐฝ์„ ์ฐพ๊ณ  ํ•ด๋‹น ์ฐฝ์—์„œ ์ฟผ๋ฆฌ ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. ์ฟผ๋ฆฌ ๋ฒ”์œ„ ์„ ํƒ ์ƒ์ž์— ์„œ๋น„์Šค ๊ณ„์ •์„ ๋ถ„์„ํ•  ํ”„๋กœ์ ํŠธ์˜ ์ด๋ฆ„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

  4. ์„œ๋น„์Šค ๊ณ„์ • ์ถ”๊ฐ€ ์„น์…˜์—์„œ ์„œ๋น„์Šค ๊ณ„์ • ์ƒ์ž๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  ์„œ๋น„์Šค ๊ณ„์ • ๋ชฉ๋ก์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ์ด ๋ชฉ๋ก์—๋Š” ๊ฐ ์„œ๋น„์Šค ๊ณ„์ •์ด ์—ฐ๊ฒฐ๋œ ํ”„๋กœ์ ํŠธ์™€ ๊ฐ ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ด๋ฉ”์ผ ์ฃผ์†Œ๋„ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

  5. ์ตœ๊ทผ ์‚ฌ์šฉ๋Ÿ‰์„ ํ™•์ธํ•  ์„œ๋น„์Šค ๊ณ„์ •์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  6. ์„ ํƒ์‚ฌํ•ญ: 2๊ฐœ ์ด์ƒ์˜ ์„œ๋น„์Šค ๊ณ„์ •์— ๋Œ€ํ•œ ์ตœ๊ทผ ์‚ฌ์šฉ๋Ÿ‰์„ ๋ณด๋ ค๋ฉด ๊ณ„์ • ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•˜๊ณ  ๋‹ค๋ฅธ ์„œ๋น„์Šค ๊ณ„์ •์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ์— ์ตœ๋Œ€ 10๊ฐœ์˜ ์„œ๋น„์Šค ๊ณ„์ •์„ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  7. ์•ก์„ธ์Šค ํ™œ๋™ ์ฟผ๋ฆฌ ํŒจ๋„์—์„œ ์ฟผ๋ฆฌ ์‹คํ–‰์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ ํŽ˜์ด์ง€์— ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ตœ๊ทผ ์‚ฌ์šฉ๋Ÿ‰์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์ด ํŽ˜์ด์ง€์˜ ํ™œ๋™ ์ดํ•ด๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

gcloud

ํŠน์ • ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ตœ๊ทผ ์ธ์ฆ ํ™œ๋™์„ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ํ•„ํ„ฐ์™€ ํ•จ๊ป˜ gcloud policy-intelligence query-activity ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

gcloud policy-intelligence query-activity --activity-type=serviceAccountLastAuthentication \
    --project=PROJECT_ID \
    --query-filter='FILTER'

๋‹ค์Œ ๊ฐ’์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • PROJECT_ID: Google Cloud ํ”„๋กœ์ ํŠธ ID. ํ”„๋กœ์ ํŠธ ID๋Š” my-project ๊ฐ™์€ ์˜์ˆซ์ž ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
  • FILTER: ์‚ฌ์šฉ์„ ํ™•์ธํ•  ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ „์ฒด ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์„ ์ง€์ •ํ•˜๋Š” ํ•„ํ„ฐ์ž…๋‹ˆ๋‹ค. ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ „์ฒด ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์—๋Š” ํ”„๋กœ์ ํŠธ ID์™€ ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ด๋ฉ”์ผ ์ฃผ์†Œ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

    ๋‹จ์ผ ์„œ๋น„์Šค ๊ณ„์ •์„ ํ•„ํ„ฐ๋งํ•˜๋ ค๋ฉด ๋‹ค์Œ ํ˜•์‹์˜ ํ•„ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    activities.full_resource_name="//iam.googleapis.com/projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_EMAIL"

    ์—ฌ๋Ÿฌ ์„œ๋น„์Šค ๊ณ„์ •์„ ํ•„ํ„ฐ๋งํ•˜๋ ค๋ฉด OR์„ ์‚ฌ์šฉํ•˜์—ฌ ํ—ˆ์šฉ๋˜๋Š” ์ „์ฒด ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์„ ์—ฌ๋Ÿฌ ๊ฐœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

    activities.full_resource_name="//iam.googleapis.com/projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_1_EMAIL" OR activities.full_resource_name="//iam.googleapis.com/projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_2_EMAIL"

    ์ตœ๋Œ€ 10๊ฐœ์˜ ์„œ๋น„์Šค ๊ณ„์ •์„ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‘๋‹ต์—์„œ ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ตœ๊ทผ ์‚ฌ์šฉ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

---
activity:
  lastAuthenticatedTime: '2021-04-27T07:00:00Z'
  serviceAccount:
    fullResourceName: //iam.googleapis.com/projects/my-project/serviceAccounts/service-account-1@my-project.iam.gserviceaccount.com
    projectNumber: '123456789012'
    serviceAccountId: '123456789012345678901'
activityType: serviceAccountLastAuthentication
fullResourceName: //iam.googleapis.com/projects/my-project/serviceAccounts/service-account-1@my-project.iam.gserviceaccount.com
observationPeriod:
  endTime: '2021-07-06T07:00:00Z'
  startTime: '2020-03-12T07:00:00Z'

์ด๋Ÿฌํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์ด ํŽ˜์ด์ง€์˜ ํ™œ๋™ ์ดํ•ด๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

REST

ํŠน์ • ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ตœ๊ทผ ์ธ์ฆ ํ™œ๋™์„ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด Policy Analyzer API์˜ activities.query ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • PROJECT_ID: Google Cloud ํ”„๋กœ์ ํŠธ ID. ํ”„๋กœ์ ํŠธ ID๋Š” my-project ๊ฐ™์€ ์˜์ˆซ์ž ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
  • FILTER: ์‚ฌ์šฉ์„ ํ™•์ธํ•  ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ „์ฒด ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์„ ์ง€์ •ํ•˜๋Š” ํ•„ํ„ฐ์ž…๋‹ˆ๋‹ค.

    ๋‹จ์ผ ์„œ๋น„์Šค ๊ณ„์ •์„ ํ•„ํ„ฐ๋งํ•˜๋ ค๋ฉด ๋‹ค์Œ ํ˜•์‹์˜ ํ•„ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    activities.full_resource_name%3D%22%2F%2Fiam.googleapis.com%2Fprojects%2FPROJECT_ID%2FserviceAccounts%2FSERVICE_ACCOUNT_EMAIL%22

    ์—ฌ๋Ÿฌ ์„œ๋น„์Šค ๊ณ„์ •์„ ํ•„ํ„ฐ๋งํ•˜๋ ค๋ฉด %20OR%20์„ ์‚ฌ์šฉํ•˜์—ฌ ํ—ˆ์šฉ๋˜๋Š” ์ „์ฒด ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์„ ์—ฌ๋Ÿฌ ๊ฐœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

    activities.full_resource_name%3D%22%2F%2Fiam.googleapis.com%2Fprojects%2FPROJECT_ID%2FserviceAccounts%2FSERVICE_ACCOUNT_1_EMAIL%22%20OR%20activities.full_resource_name%3D%22%2F%2Fiam.googleapis.com%2Fprojects%2FPROJECT_ID%2FserviceAccounts%2FSERVICE_ACCOUNT_2_EMAIL%22

HTTP ๋ฉ”์„œ๋“œ ๋ฐ URL:

GET https://policyanalyzer.googleapis.com/v1/projects/PROJECT_ID/locations/global/activityTypes/serviceAccountLastAuthentication/activities:query?filter=FILTER

์š”์ฒญ์„ ๋ณด๋‚ด๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ํŽผ์นฉ๋‹ˆ๋‹ค.

์‘๋‹ต์—์„œ ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ตœ๊ทผ ์‚ฌ์šฉ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

{
  "activities": [
    {
      "fullResourceName": "//iam.googleapis.com/projects/my-project/serviceAccounts/service-account-1@my-project.iam.gserviceaccount.com",
      "activityType": "serviceAccountLastAuthentication",
      "observationPeriod": {
        "startTime": "2020-04-20T07:00:00Z",
        "endTime": "2021-05-17T07:00:00Z"
      },
      "activity": {
        "lastAuthenticatedTime": "2021-04-28T07:00:00Z",
        "serviceAccount": {
          "projectNumber": "123456789012",
          "fullResourceName": "//iam.googleapis.com/projects/my-project/serviceAccounts/service-account-1@my-project.iam.gserviceaccount.com",
          "serviceAccountId": "123456789012345678901"
        }
      }
    }
  ]
}

ํŠน์ • ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค์˜ ์ตœ๊ทผ ์‚ฌ์šฉ๋Ÿ‰ ๋ณด๊ธฐ

ํŠน์ • ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค๊ฐ€ ๋งˆ์ง€๋ง‰์œผ๋กœ ์‚ฌ์šฉ๋œ ๋‚ ์งœ๋ฅผ ์ฐพ์œผ๋ ค๋ฉด ์ตœ๊ทผ ์‚ฌ์šฉ๋Ÿ‰์„ ๋ณด๋ ค๋Š” ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค๋ฅผ ํ™•์ธํ•œ ๋‹ค์Œ ํ•ด๋‹น ID๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฟผ๋ฆฌ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

JSON ํ‚ค ํŒŒ์ผ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ํŒŒ์ผ์˜ private_key_id ํ•„๋“œ์—์„œ ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค์˜ ๊ณ ์œ  ID๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

JSON ํ‚ค ํŒŒ์ผ์ด ์—†๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ ๋‹จ๊ณ„์— ๋”ฐ๋ผ ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค์˜ ๊ณ ์œ  ID๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ ์ •์ฑ… ๋ถ„์„ ๋„๊ตฌ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    ์ •์ฑ… ๋ถ„์„ ๋„๊ตฌ๋กœ ์ด๋™

  2. ์ตœ๊ทผ ํ™œ๋™ ๋ถ„์„์—์„œ ์ด ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค๊ฐ€ ๋งˆ์ง€๋ง‰์œผ๋กœ ์‚ฌ์šฉ๋œ ์‹œ๊ธฐ๋Š” ์–ธ์ œ์ธ๊ฐ€์š”?๋ผ๋Š” ๋ผ๋ฒจ์ด ์ง€์ •๋œ ์ฐฝ์„ ์ฐพ๊ณ  ํ•ด๋‹น ์ฐฝ์—์„œ ์ฟผ๋ฆฌ ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. ์ฟผ๋ฆฌ ๋ฒ”์œ„ ์„ ํƒ ์ƒ์ž์— ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค๋ฅผ ๋ถ„์„ํ•˜๋ ค๋Š” ํ”„๋กœ์ ํŠธ์˜ ์ด๋ฆ„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

  4. ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค ์ถ”๊ฐ€ ์„น์…˜์—์„œ ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค ์ƒ์ž๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค ๋ชฉ๋ก์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ชฉ๋ก์—๋Š” ๊ฐ ํ‚ค์™€ ์—ฐ๊ฒฐ๋œ ํ”„๋กœ์ ํŠธ ๋ฐ ์„œ๋น„์Šค ๊ณ„์ •๋„ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

  5. ์ตœ๊ทผ ์‚ฌ์šฉ๋Ÿ‰์„ ๋ณด๋ ค๋Š” ํ‚ค๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  6. ์„ ํƒ์‚ฌํ•ญ: 2๊ฐœ ์ด์ƒ์˜ ํ‚ค์— ๋Œ€ํ•œ ์ตœ๊ทผ ์‚ฌ์šฉ๋Ÿ‰์„ ๋ณด๋ ค๋ฉด ํ‚ค ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•˜๊ณ  ๋‹ค๋ฅธ ํ‚ค๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ์— ์ตœ๋Œ€ 10๊ฐœ์˜ ํ‚ค๋ฅผ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  7. ์•ก์„ธ์Šค ํ™œ๋™ ์ฟผ๋ฆฌ ํŒจ๋„์—์„œ ์ฟผ๋ฆฌ ์‹คํ–‰์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ ํŽ˜์ด์ง€์— ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค์˜ ์ตœ๊ทผ ์‚ฌ์šฉ๋Ÿ‰์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์ด ํŽ˜์ด์ง€์˜ ํ™œ๋™ ์ดํ•ด๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

gcloud

๋จผ์ € ์ตœ๊ทผ ์‚ฌ์šฉ๋Ÿ‰์„ ํ™•์ธํ•  ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  1. ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค๋ฅผ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค.

    ์•„๋ž˜์˜ ๋ช…๋ น์–ด ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • SERVICE_ACCOUNT_EMAIL: ํ‚ค๊ฐ€ ์—ฐ๊ฒฐ๋œ ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ด๋ฉ”์ผ ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค.

    gcloud iam service-accounts keys list ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    Linux, macOS ๋˜๋Š” Cloud Shell

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

    Windows(PowerShell)

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

    Windows(cmd.exe)

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

    ์ถœ๋ ฅ์—๋Š” ๊ฐ ํ‚ค์˜ ๊ณ ์œ  ID, ์ƒ์„ฑ ์‹œ๊ฐ„, ๋งŒ๋ฃŒ ์‹œ๊ฐ„์„ ํฌํ•จํ•˜์—ฌ ์„œ๋น„์Šค ๊ณ„์ •๊ณผ ๊ด€๋ จ๋œ ๋ชจ๋“  ์‚ฌ์šฉ์ž ์ƒ์„ฑ ํ‚ค ๋ชฉ๋ก์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

  2. ์ถœ๋ ฅ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ถ”์ ํ•  ํ‚ค๋ฅผ ์‹๋ณ„ํ•˜๊ณ  ๊ณ ์œ  ID๋ฅผ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์„œ๋น„์Šค ๊ณ„์ • ํ‚ค์˜ ๊ณ ์œ  ID๋ฅผ ์ฐพ์€ ํ›„ ์ด ID๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ™œ๋™ ๋ถ„์„๊ธฐ์˜ ๊ฒฐ๊ณผ๋ฅผ ํ•„ํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค.

ํŠน์ • ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค์˜ ์ตœ๊ทผ ์ธ์ฆ ํ™œ๋™์„ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ํ•„ํ„ฐ์™€ ํ•จ๊ป˜ gcloud policy-intelligence query-activity ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜์˜ ๋ช…๋ น์–ด ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • PROJECT_ID: Google Cloud ํ”„๋กœ์ ํŠธ ID. ํ”„๋กœ์ ํŠธ ID๋Š” my-project ๊ฐ™์€ ์˜์ˆซ์ž ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
  • FILTER: ์‚ฌ์šฉ์„ ํ™•์ธํ•  ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค์˜ ์ „์ฒด ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์„ ์ง€์ •ํ•˜๋Š” ํ•„ํ„ฐ์ž…๋‹ˆ๋‹ค. ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค์˜ ์ „์ฒด ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์—๋Š” ํ”„๋กœ์ ํŠธ ID, ํ‚ค์™€ ์—ฐ๊ฒฐ๋œ ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ด๋ฉ”์ผ ์ฃผ์†Œ, ํ‚ค ID๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

    ๋‹จ์ผ ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค๋ฅผ ํ•„ํ„ฐ๋งํ•˜๋ ค๋ฉด ๋‹ค์Œ ํ˜•์‹์˜ ํ•„ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    activities.full_resource_name="//iam.googleapis.com/projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_EMAIL/keys/KEY_ID"

    ์—ฌ๋Ÿฌ ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค๋ฅผ ํ•„ํ„ฐ๋งํ•˜๋ ค๋ฉด OR์„ ์‚ฌ์šฉํ•˜์—ฌ ํ—ˆ์šฉ๋˜๋Š” ์ „์ฒด ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์„ ์—ฌ๋Ÿฌ ๊ฐœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

    activities.full_resource_name="//iam.googleapis.com/projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_1_EMAIL/keys/KEY_ID_1" OR activities.full_resource_name="//iam.googleapis.com/projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_2_EMAIL/keys/KEY_ID_2"

    ์ตœ๋Œ€ 10๊ฐœ์˜ ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค๋ฅผ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

Linux, macOS ๋˜๋Š” Cloud Shell

gcloud policy-intelligence query-activity --activity-type=serviceAccountKeyLastAuthentication \
    --project=PROJECT_ID \
    --query-filter='FILTER'

Windows(PowerShell)

gcloud policy-intelligence query-activity --activity-type=serviceAccountKeyLastAuthentication `
    --project=PROJECT_ID `
    --query-filter='FILTER'

Windows(cmd.exe)

gcloud policy-intelligence query-activity --activity-type=serviceAccountKeyLastAuthentication ^
    --project=PROJECT_ID ^
    --query-filter='FILTER'

๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ ์‘๋‹ต์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

activity:
  lastAuthenticatedTime: '2021-06-11T07:00:00Z'
  serviceAccountKey:
    fullResourceName: //iam.googleapis.com/projects/my-project/serviceAccounts/service-account-1@my-project.iam.gserviceaccount.com/keys/1c65fca351d6925e629059743428b7af243a728c
    projectNumber: '232342569935'
    serviceAccountId: '103185812403937829397'
activityType: serviceAccountKeyLastAuthentication
fullResourceName: //iam.googleapis.com/projects/my-project/serviceAccounts/service-account-1@my-project.iam.gserviceaccount.com/keys/1c65fca351d6925e629059743428b7af243a728c
observationPeriod:
  endTime: '2021-07-06T07:00:00Z'
  startTime: '2020-09-10T07:00:00Z'

์‘๋‹ต์—์„œ ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค์˜ ์ตœ๊ทผ ์‚ฌ์šฉ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์ด ํŽ˜์ด์ง€์˜ ํ™œ๋™ ์ดํ•ด๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

REST

๋จผ์ € ์ตœ๊ทผ ์‚ฌ์šฉ๋Ÿ‰์„ ํ™•์ธํ•  ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  1. ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค๋ฅผ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค.

    ์„œ๋น„์Šค ๊ณ„์ •์˜ ๋ชจ๋“  ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค๋ฅผ ๋‚˜์—ดํ•˜๋ ค๋ฉด IAM API์˜ projects.serviceAccounts.keys.list ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    ์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • PROJECT_ID: Google Cloud ํ”„๋กœ์ ํŠธ ID. ํ”„๋กœ์ ํŠธ ID๋Š” my-project ๊ฐ™์€ ์˜์ˆซ์ž ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
    • 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

    ์š”์ฒญ์„ ๋ณด๋‚ด๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ํŽผ์นฉ๋‹ˆ๋‹ค.

    ์‘๋‹ต์—์„œ ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค์˜ ์ตœ๊ทผ ์‚ฌ์šฉ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

    {
      "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",
          "disabled": true
        }
      ]
    }
    

  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"

์„œ๋น„์Šค ๊ณ„์ • ํ‚ค์˜ ๊ณ ์œ  ID๋ฅผ ์ฐพ์€ ํ›„ ์ด ID๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ™œ๋™ ๋ถ„์„๊ธฐ์˜ ๊ฒฐ๊ณผ๋ฅผ ํ•„ํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค.

ํŠน์ • ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค์˜ ์ตœ๊ทผ ์ธ์ฆ ํ™œ๋™์„ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด Policy Analyzer API์˜ activities.query ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • PROJECT_ID: Google Cloud ํ”„๋กœ์ ํŠธ ID. ํ”„๋กœ์ ํŠธ ID๋Š” my-project ๊ฐ™์€ ์˜์ˆซ์ž ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
  • FILTER: ์‚ฌ์šฉ์„ ํ™•์ธํ•  ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค์˜ ์ „์ฒด ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์„ ์ง€์ •ํ•˜๋Š” ํ•„ํ„ฐ์ž…๋‹ˆ๋‹ค. ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค์˜ ์ „์ฒด ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์—๋Š” ํ”„๋กœ์ ํŠธ ID, ํ‚ค์™€ ์—ฐ๊ฒฐ๋œ ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ด๋ฉ”์ผ ์ฃผ์†Œ, ํ‚ค ID๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

    ๋‹จ์ผ ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค๋ฅผ ํ•„ํ„ฐ๋งํ•˜๋ ค๋ฉด ๋‹ค์Œ ํ˜•์‹์˜ ํ•„ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    activities.full_resource_name%3D%22%2F%2Fiam.googleapis.com%2Fprojects%2FPROJECT_ID%2FserviceAccounts%2FSERVICE_ACCOUNT_EMAIL%2Fkeys%2FKEY_ID%22

    ์—ฌ๋Ÿฌ ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค๋ฅผ ํ•„ํ„ฐ๋งํ•˜๋ ค๋ฉด %20OR%20์„ ์‚ฌ์šฉํ•˜์—ฌ ํ—ˆ์šฉ๋˜๋Š” ์ „์ฒด ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์„ ์—ฌ๋Ÿฌ ๊ฐœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

    activities.full_resource_name%3D%22%2F%2Fiam.googleapis.com%2Fprojects%2FPROJECT_ID%2FserviceAccounts%2FSERVICE_ACCOUNT_1_EMAIL%2Fkeys%2FKEY_ID_1%22%20OR%20activities.full_resource_name%3D%22%2F%2Fiam.googleapis.com%2Fprojects%2FPROJECT_ID%2FserviceAccounts%2FSERVICE_ACCOUNT_2_EMAIL%2Fkeys%2FKEY_ID_2%22

    ์ตœ๋Œ€ 10๊ฐœ์˜ ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค๋ฅผ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

HTTP ๋ฉ”์„œ๋“œ ๋ฐ URL:

GET https://policyanalyzer.googleapis.com/v1/projects/PROJECT_ID/locations/global/activityTypes/serviceAccountKeyLastAuthentication/activities:query?filter=FILTER

์š”์ฒญ์„ ๋ณด๋‚ด๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ํŽผ์นฉ๋‹ˆ๋‹ค.

์‘๋‹ต์—์„œ ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค์˜ ์ตœ๊ทผ ์‚ฌ์šฉ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

{
  "activities": [
    {
      "activity": {
        "lastAuthenticatedTime": "2021-06-11T07:00:00Z",
        "serviceAccountKey": {
          "fullResourceName": "//iam.googleapis.com/projects/my-project/serviceAccounts/service-account-1@my-project.iam.gserviceaccount.com/keys/1c65fca351d6925e629059743428b7af243a728c",
          "projectNumber": "123456789012",
          "serviceAccountId": "123456789012345678901"
        }
      },
      "activityType": "serviceAccountKeyLastAuthentication",
      "fullResourceName": "//iam.googleapis.com/projects/my-project/serviceAccounts/service-account-1t@my-project.iam.gserviceaccount.com/keys/1c65fca351d6925e629059743428b7af243a728c",
      "observationPeriod": {
        "endTime": "2021-07-06T07:00:00Z",
        "startTime": "2020-04-20T07:00:00Z"
      }
    }
  ]
}

์ด๋Ÿฌํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์ด ํŽ˜์ด์ง€์˜ ํ™œ๋™ ์ดํ•ด๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

ํ™œ๋™ ์ดํ•ด

์ฝ˜์†”

์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ํŽ˜์ด์ง€์—๋Š” ์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค.

์„œ๋น„์Šค ๊ณ„์ • ์ฟผ๋ฆฌ์˜ ๊ฒฝ์šฐ ๊ฒฐ๊ณผ ํ‘œ์— ์ฟผ๋ฆฌ์˜ ๊ฐ ์„œ๋น„์Šค ๊ณ„์ •๊ณผ ๋งˆ์ง€๋ง‰ ์ธ์ฆ ์‹œ๊ฐ„์ด ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค.

์„œ๋น„์Šค ๊ณ„์ • ํ‚ค ์ฟผ๋ฆฌ์˜ ๊ฒฝ์šฐ ๊ฒฐ๊ณผ ํ‘œ์— ์ฟผ๋ฆฌ์˜ ๊ฐ ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค, ์—ฐ๊ฒฐ๋œ ์„œ๋น„์Šค ๊ณ„์ •, ๋งˆ์ง€๋ง‰ ์ธ์ฆ ์‹œ๊ฐ„์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์ตœ๊ทผ์˜ ์ธ์ฆ ์ด๋ฒคํŠธ๊ฐ€ ๊ฒฐ๊ณผ์— ํฌํ•จ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋„์›€๋ง์—์„œ ๋ถ„์„ ์ค‘์— ์‚ฌ์šฉ๋œ ์ •ํ™•ํ•œ ๊ธฐ๊ฐ„์„ ํ™•์ธํ•˜์„ธ์š”. ์ด ๋ฒ”์œ„ ์™ธ๋ถ€์—์„œ ๋ฐœ์ƒํ•œ ์ธ์ฆ ์ด๋ฒคํŠธ๋Š” ๊ฒฐ๊ณผ์— ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‘ ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ ํ‘œ์—๋Š” ์„œ๋น„์Šค ๊ณ„์ •์ด ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด ๊ฐ–๋Š” IAM ์—ญํ• ๊ณผ ํ•ด๋‹น ๋ณด์•ˆ ํ†ต๊ณ„๊ฐ€ ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ†ต๊ณ„๋Š” ์„œ๋น„์Šค ๊ณ„์ •์ด ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•˜๋Š” ํŒจํ„ด์„ ๊ฐ•์กฐ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ผ๋ถ€ ํ†ต๊ณ„๋Š” ๊ณผ๋„ํ•œ ๊ถŒํ•œ ๋˜๋Š” ์ฃผ ๊ตฌ์„ฑ์›์—๊ฒŒ ํ•„์š” ์—†๋Š” ๊ถŒํ•œ์„ ๊ฐ•์กฐํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํ†ต๊ณ„๋Š” ์ธก๋ฉด ์ด๋™ ๊ถŒํ•œ์ด ์žˆ๋Š” ์„œ๋น„์Šค ๊ณ„์ • ๋˜๋Š” ์„œ๋น„์Šค ๊ณ„์ •์ด ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์˜ ์„œ๋น„์Šค ๊ณ„์ •์„ ๊ฐ€์žฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ถŒํ•œ์„ ๊ฐ•์กฐ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ถ€ ํ†ต๊ณ„์—๋Š” ๊ณผ๋„ํ•œ ๊ถŒํ•œ์„ ์ค„์ด๊ธฐ ์œ„ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ œ์•ˆํ•˜๋Š” ์—ญํ•  ๊ถŒ์žฅ์‚ฌํ•ญ๋„ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ๊ถŒ์žฅ์‚ฌํ•ญ ๋ฐ ํ†ต๊ณ„๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๋ ค๋ฉด ๊ถŒ์žฅ์‚ฌํ•ญ ๊ฒ€ํ†  ๋ฐ ์ ์šฉ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

gcloud

ํ™œ๋™ ๋ถ„์„๊ธฐ์—์„œ ๊ฒฐ๊ณผ๋ฅผ ํ™œ๋™ ๋ชฉ๋ก์œผ๋กœ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค. ํ™œ๋™์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ•„๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • fullResourceName: ํ™œ๋™์ด ๋ณด๊ณ ๋˜๋Š” ์„œ๋น„์Šค ๊ณ„์ • ๋˜๋Š” ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค์˜ ์ „์ฒด ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์ด ํ˜•์‹์€ ๋‹ค์Œ ์„น์…˜๊ณผ ์ „์ฒด ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์— ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • activityType: ๋ณด๊ณ ๋˜๋Š” ํ™œ๋™ ์œ ํ˜•์ž…๋‹ˆ๋‹ค. ์ตœ๊ทผ ์„œ๋น„์Šค ๊ณ„์ • ์ธ์ฆ ํ™œ๋™์—์„œ ๊ฐ’์€ serviceAccountLastAuthentication์ž…๋‹ˆ๋‹ค. ์ตœ๊ทผ ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค ์ธ์ฆ ํ™œ๋™์˜ ๊ฒฝ์šฐ ๊ฐ’์€ serviceAccountKeyLastAuthentication์ž…๋‹ˆ๋‹ค.
  • observationPeriod: ์„œ๋น„์Šค ๊ณ„์ • ๋˜๋Š” ํ‚ค๊ฐ€ ํ™œ๋™์—์„œ ๊ด€์ฐฐ๋œ ์‹œ๊ฐ„์„ ๋‚˜ํƒ€๋‚ด๋Š” ์‹œ์ž‘ ๋ฐ ์ข…๋ฃŒ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํƒ€์ž„์Šคํƒฌํ”„์˜ ์‹œ๊ฐ„์€ ํ•ญ์ƒ T07:00:00Z์ž…๋‹ˆ๋‹ค.
  • activity: ํ™œ๋™์˜ ์„ธ๋ถ€์ •๋ณด์ž…๋‹ˆ๋‹ค. ์ด ํ•„๋“œ์˜ ์ฝ˜ํ…์ธ ๋Š” ํ™œ๋™ ์œ ํ˜•์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ ์„น์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์„œ๋น„์Šค ๊ณ„์ • ํ™œ๋™ ์„ธ๋ถ€์ •๋ณด

serviceAccountLastAuthentication ํ™œ๋™์˜ activity ํ•„๋“œ์—๋Š” ๋‹ค์Œ ํ•„๋“œ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

  • serviceAccount: ๋‹ค์Œ์„ ํฌํ•จํ•œ ํ™œ๋™์ด ๋ณด๊ณ ๋˜๋Š” ์„œ๋น„์Šค ๊ณ„์ •์— ๋Œ€ํ•œ ์„ธ๋ถ€์ •๋ณด์ž…๋‹ˆ๋‹ค.

    • fullResourceName: ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ „์ฒด ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์ด๋ฉฐ ํ˜•์‹์€ //iam.googleapis.com/projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_EMAIL์ž…๋‹ˆ๋‹ค.
    • projectNumber: ์„œ๋น„์Šค ๊ณ„์ •์„ ์†Œ์œ ํ•˜๋Š” ํ”„๋กœ์ ํŠธ์˜ ์ˆซ์ž ID์ž…๋‹ˆ๋‹ค.
    • serviceAccountId: ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ˆซ์ž ID์ž…๋‹ˆ๋‹ค.
  • lastAuthenticatedTime: ์ตœ๊ทผ ์ธ์ฆ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ๋‚ ์งœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํƒ€์ž„์Šคํƒฌํ”„์ž…๋‹ˆ๋‹ค. ์ด ํƒ€์ž„์Šคํƒฌํ”„์˜ ์‹œ๊ฐ„์€ ์ธ์ฆ ์ด๋ฒคํŠธ์˜ ์ •ํ™•ํ•œ ์‹œ๊ฐ„์— ๊ด€๊ณ„์—†์ด ํ•ญ์ƒ T07:00:00Z์ž…๋‹ˆ๋‹ค.

    ๊ฐ€์žฅ ์ตœ๊ทผ์˜ ์ธ์ฆ ์ด๋ฒคํŠธ๊ฐ€ ๊ฒฐ๊ณผ์— ํฌํ•จ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. observationPeriod๋ฅผ ํ™•์ธํ•˜์—ฌ ๋ถ„์„ ์ค‘์— ์‚ฌ์šฉ๋œ ์ •ํ™•ํ•œ ๊ธฐ๊ฐ„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฒ”์œ„ ์™ธ๋ถ€์—์„œ ๋ฐœ์ƒํ•œ ์ธ์ฆ ์ด๋ฒคํŠธ๋Š” ๊ฒฐ๊ณผ์— ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

    ์‚ฌ์šฉํ•œ ์ ์ด ์—†๋Š” ์„œ๋น„์Šค ๊ณ„์ •์—๋Š” ์ด ํ•„๋“œ๊ฐ€ ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์„œ๋น„์Šค ๊ณ„์ • ํ‚ค ํ™œ๋™ ์„ธ๋ถ€์ •๋ณด

serviceAccountKeyLastAuthentication ํ™œ๋™์˜ activity ํ•„๋“œ์—๋Š” ๋‹ค์Œ ํ•„๋“œ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

  • serviceAccountKey: ๋‹ค์Œ์„ ํฌํ•จํ•œ ํ™œ๋™์ด ๋ณด๊ณ ๋˜๋Š” ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค์— ๋Œ€ํ•œ ์„ธ๋ถ€์ •๋ณด์ž…๋‹ˆ๋‹ค.

    • fullResourceName: ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค์˜ ์ „์ฒด ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์ด๋ฉฐ ํ˜•์‹์€ //iam.googleapis.com/projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_EMAIL/keys/KEY_ID์ž…๋‹ˆ๋‹ค.
    • projectNumber: ํ‚ค๊ฐ€ ์—ฐ๊ฒฐ๋œ ์„œ๋น„์Šค ๊ณ„์ •์„ ์†Œ์œ ํ•˜๋Š” ํ”„๋กœ์ ํŠธ์˜ ์ˆซ์ž ID์ž…๋‹ˆ๋‹ค.
    • serviceAccountId: ํ‚ค๊ฐ€ ์—ฐ๊ฒฐ๋œ ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ˆซ์ž ID์ž…๋‹ˆ๋‹ค.
  • lastAuthenticatedTime: ์ตœ๊ทผ ์ธ์ฆ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ๋‚ ์งœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํƒ€์ž„์Šคํƒฌํ”„์ž…๋‹ˆ๋‹ค. ์ด ํƒ€์ž„์Šคํƒฌํ”„์˜ ์‹œ๊ฐ„์€ ์ธ์ฆ ์ด๋ฒคํŠธ์˜ ์ •ํ™•ํ•œ ์‹œ๊ฐ„์— ๊ด€๊ณ„์—†์ด ํ•ญ์ƒ T07:00:00Z์ž…๋‹ˆ๋‹ค.

    ๊ฐ€์žฅ ์ตœ๊ทผ์˜ ์ธ์ฆ ์ด๋ฒคํŠธ๊ฐ€ ๊ฒฐ๊ณผ์— ํฌํ•จ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. observationPeriod๋ฅผ ํ™•์ธํ•˜์—ฌ ๋ถ„์„ ์ค‘์— ์‚ฌ์šฉ๋œ ์ •ํ™•ํ•œ ๊ธฐ๊ฐ„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฒ”์œ„ ์™ธ๋ถ€์—์„œ ๋ฐœ์ƒํ•œ ์ธ์ฆ ์ด๋ฒคํŠธ๋Š” ๊ฒฐ๊ณผ์— ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

    ์‚ฌ์šฉํ•œ ์ ์ด ์—†๋Š” ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค์—๋Š” ์ด ํ•„๋“œ๊ฐ€ ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

REST

ํ™œ๋™ ๋ถ„์„๊ธฐ์—์„œ ๊ฒฐ๊ณผ๋ฅผ ํ™œ๋™ ๋ชฉ๋ก์œผ๋กœ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค. ํ™œ๋™์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ•„๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • fullResourceName: ํ™œ๋™์ด ๋ณด๊ณ ๋˜๋Š” ์„œ๋น„์Šค ๊ณ„์ • ๋˜๋Š” ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค์˜ ์ „์ฒด ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์ด ํ˜•์‹์€ ๋‹ค์Œ ์„น์…˜๊ณผ ์ „์ฒด ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์— ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • activityType: ๋ณด๊ณ ๋˜๋Š” ํ™œ๋™ ์œ ํ˜•์ž…๋‹ˆ๋‹ค. ์ตœ๊ทผ ์„œ๋น„์Šค ๊ณ„์ • ์ธ์ฆ ํ™œ๋™์—์„œ ๊ฐ’์€ serviceAccountLastAuthentication์ž…๋‹ˆ๋‹ค. ์ตœ๊ทผ ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค ์ธ์ฆ ํ™œ๋™์˜ ๊ฒฝ์šฐ ๊ฐ’์€ serviceAccountKeyLastAuthentication์ž…๋‹ˆ๋‹ค.
  • observationPeriod: ์„œ๋น„์Šค ๊ณ„์ • ๋˜๋Š” ํ‚ค๊ฐ€ ํ™œ๋™์—์„œ ๊ด€์ฐฐ๋œ ์‹œ๊ฐ„์„ ๋‚˜ํƒ€๋‚ด๋Š” ์‹œ์ž‘ ๋ฐ ์ข…๋ฃŒ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํƒ€์ž„์Šคํƒฌํ”„์˜ ์‹œ๊ฐ„์€ ํ•ญ์ƒ T07:00:00Z์ž…๋‹ˆ๋‹ค.
  • activity: ํ™œ๋™์˜ ์„ธ๋ถ€์ •๋ณด์ž…๋‹ˆ๋‹ค. ์ด ํ•„๋“œ์˜ ์ฝ˜ํ…์ธ ๋Š” ํ™œ๋™ ์œ ํ˜•์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ ์„น์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์„œ๋น„์Šค ๊ณ„์ • ํ™œ๋™ ์„ธ๋ถ€์ •๋ณด

serviceAccountLastAuthentication ํ™œ๋™์˜ activity ํ•„๋“œ์—๋Š” ๋‹ค์Œ ํ•„๋“œ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

  • serviceAccount: ๋‹ค์Œ์„ ํฌํ•จํ•œ ํ™œ๋™์ด ๋ณด๊ณ ๋˜๋Š” ์„œ๋น„์Šค ๊ณ„์ •์— ๋Œ€ํ•œ ์„ธ๋ถ€์ •๋ณด์ž…๋‹ˆ๋‹ค.

    • fullResourceName: ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ „์ฒด ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์ด๋ฉฐ ํ˜•์‹์€ //iam.googleapis.com/projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_EMAIL์ž…๋‹ˆ๋‹ค.
    • projectNumber: ์„œ๋น„์Šค ๊ณ„์ •์„ ์†Œ์œ ํ•˜๋Š” ํ”„๋กœ์ ํŠธ์˜ ์ˆซ์ž ID์ž…๋‹ˆ๋‹ค.
    • serviceAccountId: ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ˆซ์ž ID์ž…๋‹ˆ๋‹ค.
  • lastAuthenticatedTime: ์ตœ๊ทผ ์ธ์ฆ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ๋‚ ์งœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํƒ€์ž„์Šคํƒฌํ”„์ž…๋‹ˆ๋‹ค. ์ด ํƒ€์ž„์Šคํƒฌํ”„์˜ ์‹œ๊ฐ„์€ ์ธ์ฆ ์ด๋ฒคํŠธ์˜ ์ •ํ™•ํ•œ ์‹œ๊ฐ„์— ๊ด€๊ณ„์—†์ด ํ•ญ์ƒ T07:00:00Z์ž…๋‹ˆ๋‹ค.

    ๊ฐ€์žฅ ์ตœ๊ทผ์˜ ์ธ์ฆ ์ด๋ฒคํŠธ๊ฐ€ ๊ฒฐ๊ณผ์— ํฌํ•จ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. observationPeriod๋ฅผ ํ™•์ธํ•˜์—ฌ ๋ถ„์„ ์ค‘์— ์‚ฌ์šฉ๋œ ์ •ํ™•ํ•œ ๊ธฐ๊ฐ„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฒ”์œ„ ์™ธ๋ถ€์—์„œ ๋ฐœ์ƒํ•œ ์ธ์ฆ ์ด๋ฒคํŠธ๋Š” ๊ฒฐ๊ณผ์— ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

    ์‚ฌ์šฉํ•œ ์ ์ด ์—†๋Š” ์„œ๋น„์Šค ๊ณ„์ •์—๋Š” ์ด ํ•„๋“œ๊ฐ€ ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์„œ๋น„์Šค ๊ณ„์ • ํ‚ค ํ™œ๋™ ์„ธ๋ถ€์ •๋ณด

serviceAccountKeyLastAuthentication ํ™œ๋™์˜ activity ํ•„๋“œ์—๋Š” ๋‹ค์Œ ํ•„๋“œ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

  • serviceAccountKey: ๋‹ค์Œ์„ ํฌํ•จํ•œ ํ™œ๋™์ด ๋ณด๊ณ ๋˜๋Š” ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค์— ๋Œ€ํ•œ ์„ธ๋ถ€์ •๋ณด์ž…๋‹ˆ๋‹ค.

    • fullResourceName: ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค์˜ ์ „์ฒด ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์ด๋ฉฐ ํ˜•์‹์€ //iam.googleapis.com/projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_EMAIL/keys/KEY_ID์ž…๋‹ˆ๋‹ค.
    • projectNumber: ํ‚ค๊ฐ€ ์—ฐ๊ฒฐ๋œ ์„œ๋น„์Šค ๊ณ„์ •์„ ์†Œ์œ ํ•˜๋Š” ํ”„๋กœ์ ํŠธ์˜ ์ˆซ์ž ID์ž…๋‹ˆ๋‹ค.
    • serviceAccountId: ํ‚ค๊ฐ€ ์—ฐ๊ฒฐ๋œ ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ˆซ์ž ID์ž…๋‹ˆ๋‹ค.
  • lastAuthenticatedTime: ์ตœ๊ทผ ์ธ์ฆ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ๋‚ ์งœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํƒ€์ž„์Šคํƒฌํ”„์ž…๋‹ˆ๋‹ค. ์ด ํƒ€์ž„์Šคํƒฌํ”„์˜ ์‹œ๊ฐ„์€ ์ธ์ฆ ์ด๋ฒคํŠธ์˜ ์ •ํ™•ํ•œ ์‹œ๊ฐ„์— ๊ด€๊ณ„์—†์ด ํ•ญ์ƒ T07:00:00Z์ž…๋‹ˆ๋‹ค.

    ๊ฐ€์žฅ ์ตœ๊ทผ์˜ ์ธ์ฆ ์ด๋ฒคํŠธ๊ฐ€ ๊ฒฐ๊ณผ์— ํฌํ•จ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. observationPeriod๋ฅผ ํ™•์ธํ•˜์—ฌ ๋ถ„์„ ์ค‘์— ์‚ฌ์šฉ๋œ ์ •ํ™•ํ•œ ๊ธฐ๊ฐ„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฒ”์œ„ ์™ธ๋ถ€์—์„œ ๋ฐœ์ƒํ•œ ์ธ์ฆ ์ด๋ฒคํŠธ๋Š” ๊ฒฐ๊ณผ์— ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

    ์‚ฌ์šฉํ•œ ์ ์ด ์—†๋Š” ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค์—๋Š” ์ด ํ•„๋“œ๊ฐ€ ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ๋‹จ๊ณ„