์ด ํ์ด์ง์์๋ ํ๋ ๋ถ์๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ์๋น์ค ๊ณ์ ๋ฐ ํค๊ฐ Google API ํธ์ถ์ ๋ง์ง๋ง์ผ๋ก ์ฌ์ฉ๋ ์๊ฐ์ ํ์ธํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค. ์ด ๊ฐ์ ์ฌ์ฉ์ ์ธ์ฆ ํ๋์ด๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
์ต๊ทผ ์ธ์ฆ ํ๋์ ๋ ์ด์ ์ฌ์ฉํ์ง ์๋ ์๋น์ค ๊ณ์ ๋ฐ ์๋น์ค ๊ณ์ ํค๋ฅผ ํ์ธํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์ฌ์ฉํ์ง ์๋ ์๋น์ค ๊ณ์ ๋ฐ ํค๋ ๋ถํ์ํ ๋ณด์ ์ํ์ ์ผ๊ธฐํ ์ ์์ผ๋ฏ๋ก ์ฌ์ฉ ์ค์งํ๊ฑฐ๋ ์ญ์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์์ํ๊ธฐ ์ ์
- ์ธ์ฆ ํ๋ ์ดํด
-
Enable the Policy Analyzer 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๋ฅผ ์ฌ์ฉํ์ธ์.
์ฝ์
Google Cloud ์ฝ์์์ ์ ์ฑ ๋ถ์ ๋๊ตฌ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
์ต๊ทผ ํ๋ ๋ถ์์์ ์ด ์๋น์ค ๊ณ์ ์ด ๋ง์ง๋ง์ผ๋ก ์ฌ์ฉ๋ ์๊ธฐ๋ ์ธ์ ์ธ๊ฐ์?๋ผ๋ ๋ผ๋ฒจ์ด ์ง์ ๋ ์ฐฝ์ ์ฐพ๊ณ ํด๋น ์ฐฝ์์ ์ฟผ๋ฆฌ ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ฟผ๋ฆฌ ๋ฒ์ ์ ํ ์์์ ์๋น์ค ๊ณ์ ์ ๋ถ์ํ ํ๋ก์ ํธ์ ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค.
์๋น์ค ๊ณ์ ์ถ๊ฐ ์น์ ์์ ์๋น์ค ๊ณ์ ์์๋ฅผ ํด๋ฆญํฉ๋๋ค. ํ๋ก์ ํธ์ ๋ชจ๋ ์๋น์ค ๊ณ์ ๋ชฉ๋ก์ด ๋ํ๋ฉ๋๋ค. ์ด ๋ชฉ๋ก์๋ ๊ฐ ์๋น์ค ๊ณ์ ์ด ์ฐ๊ฒฐ๋ ํ๋ก์ ํธ์ ๊ฐ ์๋น์ค ๊ณ์ ์ ์ด๋ฉ์ผ ์ฃผ์๋ ํฌํจ๋ฉ๋๋ค.
์ต๊ทผ ์ฌ์ฉ๋์ ํ์ธํ ์๋น์ค ๊ณ์ ์ ์ ํํฉ๋๋ค.
์ ํ์ฌํญ: 2๊ฐ ์ด์์ ์๋น์ค ๊ณ์ ์ ๋ํ ์ต๊ทผ ์ฌ์ฉ๋์ ๋ณด๋ ค๋ฉด ๊ณ์ ์ถ๊ฐ๋ฅผ ํด๋ฆญํ๊ณ ๋ค๋ฅธ ์๋น์ค ๊ณ์ ์ ์ ํํฉ๋๋ค. ํ ๋ฒ์ ์ต๋ 10๊ฐ์ ์๋น์ค ๊ณ์ ์ ๋ถ์ํ ์ ์์ต๋๋ค.
์ก์ธ์ค ํ๋ ์ฟผ๋ฆฌ ํจ๋์์ ์ฟผ๋ฆฌ ์คํ์ ํด๋ฆญํฉ๋๋ค.
๊ฒฐ๊ณผ ํ์ด์ง์ ์๋น์ค ๊ณ์ ์ ์ต๊ทผ ์ฌ์ฉ๋์ด ํ์๋ฉ๋๋ค. ์ด๋ฌํ ๊ฒฐ๊ณผ๋ฅผ ์ดํดํ๋ ๋ฐฉ๋ฒ์ ์ด ํ์ด์ง์ ํ๋ ์ดํด๋ฅผ ์ฐธ์กฐํ์ธ์.
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๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
์ฝ์
Google Cloud ์ฝ์์์ ์ ์ฑ ๋ถ์ ๋๊ตฌ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
์ต๊ทผ ํ๋ ๋ถ์์์ ์ด ์๋น์ค ๊ณ์ ํค๊ฐ ๋ง์ง๋ง์ผ๋ก ์ฌ์ฉ๋ ์๊ธฐ๋ ์ธ์ ์ธ๊ฐ์?๋ผ๋ ๋ผ๋ฒจ์ด ์ง์ ๋ ์ฐฝ์ ์ฐพ๊ณ ํด๋น ์ฐฝ์์ ์ฟผ๋ฆฌ ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ฟผ๋ฆฌ ๋ฒ์ ์ ํ ์์์ ์๋น์ค ๊ณ์ ํค๋ฅผ ๋ถ์ํ๋ ค๋ ํ๋ก์ ํธ์ ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค.
์๋น์ค ๊ณ์ ํค ์ถ๊ฐ ์น์ ์์ ์๋น์ค ๊ณ์ ํค ์์๋ฅผ ํด๋ฆญํฉ๋๋ค. ํ๋ก์ ํธ์ ๋ชจ๋ ์๋น์ค ๊ณ์ ํค ๋ชฉ๋ก์ด ํ์๋ฉ๋๋ค. ์ด ๋ชฉ๋ก์๋ ๊ฐ ํค์ ์ฐ๊ฒฐ๋ ํ๋ก์ ํธ ๋ฐ ์๋น์ค ๊ณ์ ๋ ํฌํจ๋ฉ๋๋ค.
์ต๊ทผ ์ฌ์ฉ๋์ ๋ณด๋ ค๋ ํค๋ฅผ ์ ํํฉ๋๋ค.
์ ํ์ฌํญ: 2๊ฐ ์ด์์ ํค์ ๋ํ ์ต๊ทผ ์ฌ์ฉ๋์ ๋ณด๋ ค๋ฉด ํค ์ถ๊ฐ๋ฅผ ํด๋ฆญํ๊ณ ๋ค๋ฅธ ํค๋ฅผ ์ ํํฉ๋๋ค. ํ ๋ฒ์ ์ต๋ 10๊ฐ์ ํค๋ฅผ ๋ถ์ํ ์ ์์ต๋๋ค.
์ก์ธ์ค ํ๋ ์ฟผ๋ฆฌ ํจ๋์์ ์ฟผ๋ฆฌ ์คํ์ ํด๋ฆญํฉ๋๋ค.
๊ฒฐ๊ณผ ํ์ด์ง์ ์๋น์ค ๊ณ์ ํค์ ์ต๊ทผ ์ฌ์ฉ๋์ด ํ์๋ฉ๋๋ค. ์ด๋ฌํ ๊ฒฐ๊ณผ๋ฅผ ์ดํดํ๋ ๋ฐฉ๋ฒ์ ์ด ํ์ด์ง์ ํ๋ ์ดํด๋ฅผ ์ฐธ์กฐํ์ธ์.
gcloud
๋จผ์ ์ต๊ทผ ์ฌ์ฉ๋์ ํ์ธํ ์๋น์ค ๊ณ์ ํค๋ฅผ ํ์ธํฉ๋๋ค.
์๋น์ค ๊ณ์ ํค๋ฅผ ๋์ดํฉ๋๋ค.
์๋์ ๋ช ๋ น์ด ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
-
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, ์์ฑ ์๊ฐ, ๋ง๋ฃ ์๊ฐ์ ํฌํจํ์ฌ ์๋น์ค ๊ณ์ ๊ณผ ๊ด๋ จ๋ ๋ชจ๋ ์ฌ์ฉ์ ์์ฑ ํค ๋ชฉ๋ก์ด ํ์๋ฉ๋๋ค.
-
์ถ๋ ฅ์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ถ์ ํ ํค๋ฅผ ์๋ณํ๊ณ ๊ณ ์ 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
๋จผ์ ์ต๊ทผ ์ฌ์ฉ๋์ ํ์ธํ ์๋น์ค ๊ณ์ ํค๋ฅผ ํ์ธํฉ๋๋ค.
์๋น์ค ๊ณ์ ํค๋ฅผ ๋์ดํฉ๋๋ค.
์๋น์ค ๊ณ์ ์ ๋ชจ๋ ์๋น์ค ๊ณ์ ํค๋ฅผ ๋์ดํ๋ ค๋ฉด 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 } ] }
์๋ต์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ถ์ ํ ํค๋ฅผ ์๋ณํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์
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
๋ฅผ ํ์ธํ์ฌ ๋ถ์ ์ค์ ์ฌ์ฉ๋ ์ ํํ ๊ธฐ๊ฐ์ ํ์ธํฉ๋๋ค. ์ด ๋ฒ์ ์ธ๋ถ์์ ๋ฐ์ํ ์ธ์ฆ ์ด๋ฒคํธ๋ ๊ฒฐ๊ณผ์ ํฌํจ๋์ง ์์ต๋๋ค.์ฌ์ฉํ ์ ์ด ์๋ ์๋น์ค ๊ณ์ ํค์๋ ์ด ํ๋๊ฐ ํฌํจ๋์ง ์์ต๋๋ค.
๋ค์ ๋จ๊ณ
- ์ฌ์ฉ ๊ฐ๋ฅํ ๋ค๋ฅธ ์๋น์ค ๊ณ์ ์ฌ์ฉ ํ์ธ ๋๊ตฌ ๊ฒํ
- ์๋น์ค ๊ณ์ ์ฌ์ฉ ์ค์ง ๋๋ ์๋น์ค ๊ณ์ ์ญ์ ๋ฐฉ๋ฒ ์์๋ณด๊ธฐ
- ์๋น์ค ๊ณ์ ํค ์ญ์ ๋ฐฉ๋ฒ ์์๋ณด๊ธฐ