이 페이지에서는 워크로드 아이덴티티 제휴를 사용하면 생성되는 감사 로그의 예시를 보여줍니다. 워크로드 아이덴티티 제휴를 사용하면 온프레미스 또는 멀티 클라우드 워크로드에서 서비스 계정 키를 사용하지 않고도 Google Cloud 리소스에 액세스하도록 허용할 수 있습니다.
감사 로그 사용 설정 및 보기에 대한 자세한 내용은 IAM 감사 로깅을 참조하세요.
IdP 토큰을 제휴 토큰으로 교환하기 위한 로그
워크로드 아이덴티티 풀과 ID 공급업체 (IdP)를 설정한 후 IdP의 토큰을 만들어 제휴 토큰으로 교환할 수 있습니다.
주 구성원이 토큰을 교환하면 IAM에서 감사 로그를 생성할 수 있습니다. 토큰 교환 프로세스의 모든 단계에서 감사 로그를 받으려면 다음 API에 대한 데이터 액세스 활동에 대한 감사 로그를 사용 설정해야 합니다.
- Identity and Access Management(IAM) API(로그 유형 '관리자 읽기' 사용 설정)
- Security Token Service API(로그 유형 '관리자 읽기' 사용 설정)
데이터 액세스 활동에 감사 로그를 사용 설정하면 IAM은 주 구성원이 토큰을 교환할 때마다 감사 로그 항목을 생성합니다. 로그 항목에는 다음 필드가 포함됩니다.
protoPayload.authenticationInfo.principalSubject
: IdP 토큰 제목입니다.- Amazon Web Services(AWS)에서 이 필드에는 인증된 주 구성원의 Amazon 리소스 이름(ARN)이 포함됩니다.
- Microsoft Azure에서 이 필드에는 Azure 토큰 제목으로 지정한 관리형 ID의 객체 ID가 포함됩니다.
- 다른 OIDC IdP의 경우 이 필드에는 OIDC 토큰의
sub
값 또는 제목, 클레임이 포함됩니다.
protoPayload.metadata.mapped_principal
: 토큰의 제목으로 IAM 구문을 사용하여 주 구성원을 식별합니다.principal://iam.googleapis.com/projects/project-number/locations/global/workloadIdentityPools/pool-id/subject/identifier
protoPayload.resourceName
: 토큰이 연결된 워크로드 아이덴티티 풀 제공업체입니다.
다음 예시에서는 토큰 교환 요청에 대한 감사 로그 항목을 보여줍니다. 이 예시에서 Microsoft Azure 토큰은 제휴 토큰으로 교환되었습니다.
{ "logName": "projects/my-project/logs/cloudaudit.googleapis.com%2Fdata_access", "protoPayload": { "@type": "type.googleapis.com/google.cloud.audit.AuditLog", "authenticationInfo": { "principalSubject": "b6112abb-5791-4507-adb5-7e8cc306eb2e" }, "metadata": { "mapped_principal": "principal://iam.googleapis.com/projects/1234567890123/locations/global/workloadIdentityPools/azure-pool/subject/a1234bcd-5678-9012-efa3-4b5cd678ef9a" }, "methodName": "google.identity.sts.v1.SecurityTokenService.ExchangeToken", "resourceName": "projects/1234567890123/locations/global/workloadIdentityPools/azure-pool/providers/azure", "request": { "@type": "type.googleapis.com/google.identity.sts.v1.ExchangeTokenRequest", "grantType": "urn:ietf:params:oauth:grant-type:token-exchange" } }, "resource": { "type": "audited_resource" } }
서명 및 암호화된 SAML 어설션 로그
이 섹션에서는 보안 토큰 서비스에서 서명된 SAML 어설션을 확인하거나 IdP에서 전송된 암호화된 어설션을 복호화하면 생성되는 Cloud 감사 로그의 로그 항목을 설명합니다.
워크로드 아이덴티티 제휴의 경우 관련 로그 항목은 다음과 유사합니다.
"keyInfo": [ { "use": "verify" "fingerprint": "3C:B2:47:F8:A5:9A:8A:52:BD:1C:BC:96:B5:45:C1:8D:A7:F1:73:2D" }, { "use": "decrypt" "resourceName": "//iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/WORKLOAD_POOL_NAME/providers/PROVIDER_NAME/keys/KEY_NAME" } ]
이 출력에는 다음 값이 포함됩니다.
fingerprint
: SAML 사용자 인증 정보의 서명을 확인하는 데 사용된 X.509 인증서 SHA-256 해시의 16진수 표현입니다. X.509 인증서는 워크로드 아이덴티티 풀 제공업체에 연결된 SAML XML 메타데이터에서 추출됩니다.resourceName
: 암호화된 SAML 어설션을 복호화하는 데 사용된 워크로드 아이덴티티 풀 제공업체 키의 리소스 이름입니다. 이 필드는 ID 제휴에서 IdP로부터 암호화된 SAML 응답을 수신하는 경우에만 표시됩니다.
X.509 제휴 로그
이 섹션에서는 보안 토큰 서비스에서 사전 구성된 트러스트 저장소를 사용하여 mTLS 클라이언트 인증서를 확인하려고 할 때 생성되는 Cloud 감사 로그의 로그 항목을 설명합니다.
워크로드 아이덴티티 제휴의 경우 관련 로그 항목은 다음과 유사합니다.
"keyInfo": [ { "certificateType": "trust_anchor" "timeUntilExpiration": 3333405600s "fingerprintSha256": "e33f612a0e426692f29db2c7b17b9e3810ce13f09ad117c67e7227a84fd25ea5" "use": "verify" }
이 출력에는 다음 값이 포함됩니다.
certificateType
: 클라이언트 인증서 확인과 관련된 인증서 유형으로,trust_anchor
또는intermediate_ca
일 수 있습니다.timeUntilExpiration
: 인증서 체인 확인에 사용될 때 인증서 만료까지 남은 시간(초)입니다.fingerprintSha256
: X.509 인증서 SHA-256 해시의 16진수 표현입니다.
서비스 계정에 단기 사용자 인증 정보를 만들기 위한 로그
IdP의 토큰을 제휴 토큰으로 교환하면 제휴 토큰을 사용하여 서비스 계정에 대한 단기 사용자 인증 정보를 만들 수 있습니다. 모든 Google 서비스를 사용하면 단기 사용자 인증 정보로 인증할 수 있습니다.
데이터 액세스 활동에 IAM 감사 로그를 사용 설정하면 IAM은 주 구성원이 서비스 계정의 단기 사용자 인증 정보를 생성할 때마다 감사 로그 항목을 생성합니다. 로그 항목에는 다음 필드가 포함됩니다.
protoPayload.authenticationInfo.principalSubject
: 제휴 토큰의 제목입니다.resource.labels.email_id
: 단기 사용자 인증 정보가 생성된 서비스 계정입니다.
다음 예시에서는 서비스 계정에 대한 단기 OAuth 2.0 액세스 토큰을 생성하는 요청에 대한 감사 로그 항목을 보여줍니다. 이 예시에서 요청은 제휴 사용자 인증 정보로 인증되었으며 서비스 계정 my-service-account@my-project.iam.gserviceaccount.com
에 단기 사용자 인증 정보가 생성되었습니다.
{ "logName": "projects/my-project/logs/cloudaudit.googleapis.com%2Fdata_access", "protoPayload": { "@type": "type.googleapis.com/google.cloud.audit.AuditLog", "authenticationInfo": { "principalSubject": "principal://iam.googleapis.com/projects/1234567890123/locations/global/workloadIdentityPools/aws-pool/subject/012345678901" }, "methodName": "GenerateAccessToken", "request": { "@type": "type.googleapis.com/google.iam.credentials.v1.GenerateAccessTokenRequest", "name": "projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com" }, "resourceName": "projects/-/serviceAccounts/123456789012345678901" }, "resource": { "labels": { "email_id": "my-service-account@my-project.iam.gserviceaccount.com", "project_id": "my-project", "unique_id": "123456789012345678901" }, "type": "service_account" } }
가장된 서비스 계정의 사용자 인증 정보로 인증에 대한 로그
서비스 계정에 단기 사용자 인증 정보를 만든 후에는 해당 인증 정보를 사용하여 Google Cloud API를 호출할 때 서비스 계정 가장할 수 있습니다.
호출하는 메서드 중 일부는 감사 로그를 생성할 수 있습니다. 일반적으로 이러한 로그 항목은 다음 ID를 표시합니다.
- 단기 사용자 인증 정보로 가장한 서비스 계정
- 단기 사용자 인증 정보를 생성한 ID
예를 들어 사용자 jamie@example.com
이 제목 principal://iam.googleapis.com/projects/1234567890123/locations/global/workloadIdentityPools/aws-pool/subject/jamie@example.com
에 대한 제휴 토큰을 만든 다음 제휴 토큰을 사용하여 서비스 계정 my-service-account@my-project.iam.gserviceaccount.com
에 대한 단기 사용자 인증 정보를 만든다고 가정해 보겠습니다.
이후 사용자는 단기 사용자 인증 정보로 서비스 계정을 가장하여 새 Pub/Sub 주제를 만듭니다. Pub/Sub는 서비스 계정을 식별하는 로그 항목과 IdP의 토큰 제목을 생성합니다.
{
"logName": "projects/my-project/logs/cloudaudit.googleapis.com%2Factivity",
"protoPayload": {
"@type": "type.googleapis.com/google.cloud.audit.AuditLog",
"authenticationInfo": {
"principalEmail": "my-service-account@my-project.iam.gserviceaccount.com",
"serviceAccountDelegationInfo": [
{
"principalSubject": "principal://iam.googleapis.com/projects/1234567890123/locations/global/workloadIdentityPools/aws-pool/subject/012345678901"
}
]
},
"methodName": "google.pubsub.v1.Publisher.CreateTopic",
"request": {
"@type": "type.googleapis.com/google.pubsub.v1.Topic",
"name": "projects/my-project/topics/my-topic"
},
"resourceName": "projects/my-project/topics/my-topic"
},
"resource": {
"type": "pubsub_topic"
}
}
다음 단계
- IAM의 감사 로그 구성 및 보기
- Cloud 감사 로그에 대해 자세히 알아보기
- 워크로드 아이덴티티 풀을 사용하여 ID 제휴 설정하기
- 서비스 계정에 대해 알아봅니다.