| W&B 플랫폼 배포 유형 | 감사 로그 액세스 방식 |
|---|---|
| Dedicated Cloud |
|
| Multi-tenant Cloud | Enterprise 플랜에서만 제공됩니다. API를 사용하는 경우에만 액세스할 수 있습니다. |
| Self-Managed | 인스턴스 수준 버킷에 10분마다 동기화됩니다. API를 사용해서도 액세스할 수 있습니다. |
감사 로그 보존
- 특정 기간 동안 감사 로그를 보존해야 하는 경우, W&B에서는 스토리지 버킷 또는 Audit Logging API를 사용하여 주기적으로 로그를 장기 보관 스토리지로 전송할 것을 권장합니다.
- 1996년 건강보험 양도 및 책임에 관한 법률(HIPAA)의 적용을 받는 경우, 감사 로그는 필수 보존 기간이 끝나기 전까지 내부 또는 외부 주체에 의해 삭제되거나 수정될 수 없는 환경에서 최소 6년 동안 보존되어야 합니다. HIPAA를 준수하는 Dedicated Cloud 인스턴스에서 BYOB를 사용하는 경우, 장기 보존 스토리지를 포함한 관리형 스토리지에 대해 가드레일을 구성해야 합니다.
감사 로그 스키마
| Key | 정의 |
|---|---|
action | 이벤트의 작업. |
actor_email | 작업을 시작한 사용자의 이메일 주소(해당하는 경우). |
actor_ip | 작업을 시작한 사용자의 IP 주소. |
actor_user_id | 작업을 수행한 로그인된 사용자의 ID(해당하는 경우). |
artifact_asset | 작업과 연결된 아티팩트 ID(해당하는 경우). |
artifact_digest | 작업과 연결된 아티팩트 다이제스트(해당하는 경우). |
artifact_qualified_name | 작업과 연결된 아티팩트의 전체 이름(해당하는 경우). |
artifact_sequence_asset | 작업과 연결된 아티팩트 시퀀스 ID(해당하는 경우). |
cli_version | 작업을 시작한 Python SDK 버전(해당하는 경우). |
entity_asset | 작업과 연결된 엔터티 또는 팀 ID(해당하는 경우). |
entity_name | 작업과 연결된 엔터티 또는 팀 이름(해당하는 경우). |
project_asset | 작업과 연결된 프로젝트(해당하는 경우). |
project_name | 작업과 연결된 프로젝트 이름(해당하는 경우). |
report_asset | 작업과 연결된 보고서 ID(해당하는 경우). |
report_name | 작업과 연결된 보고서 이름(해당하는 경우). |
response_code | 작업에 대한 HTTP 응답 코드(해당하는 경우). |
timestamp | RFC3339 형식의 이벤트 시간. 예를 들어 2023-01-23T12:34:56Z는 2023년 1월 23일 12:34:56 UTC를 의미합니다. |
user_asset | 작업이 영향을 미치는 사용자 자산(작업을 수행하는 사용자가 아니라)(해당하는 경우). |
user_email | 작업이 영향을 미치는 사용자의 이메일 주소(작업을 수행하는 사용자의 이메일 주소가 아니라)(해당하는 경우). |
개인 식별 정보(PII)
- Self-Managed 및 Dedicated Cloud 환경에서는, 조직 관리자가 감사 로그를 가져올 때 PII를 제외하도록 설정할 수 있습니다.
- Multi-tenant Cloud 환경에서는, API 엔드포인트가 PII를 포함해 감사 로그에 필요한 필드를 항상 반환합니다. 이는 별도로 구성할 수 없습니다.
시작하기 전에
-
감사 로그는 조직 수준 관리자만 가져올 수 있습니다.
403오류가 발생하면, 본인 또는 서비스 계정에 충분한 권한이 있는지 확인하세요. -
멀티 테넌트 클라우드(Multi-tenant Cloud): 여러 멀티 테넌트 클라우드 조직의 구성원인 경우, 감사 로그 API 호출이 라우팅될 위치를 결정하는 기본 API 조직(Default API organization) 을 반드시 설정해야 합니다. 그렇지 않으면 다음과 같은 오류가 발생합니다:
기본 API 조직을 지정하려면:
- 프로필 이미지를 클릭한 다음 User Settings를 클릭합니다.
- Default API organization에서 조직을 하나 선택합니다.
감사 로그 가져오기
- 인스턴스에 맞는 API 엔드포인트를 확인합니다:
-
Self-Managed:
<wandb-platform-url>/admin/audit_logs -
Dedicated Cloud:
<instance-name>.wandb.io/admin/audit_logs -
Multi-tenant Cloud (Enterprise required):
https://api.wandb.ai/audit_logs다음 단계에서<API-endpoint>를 해당 API 엔드포인트로 바꾸십시오.
- (선택 사항) 엔드포인트에 추가할 쿼리 매개변수를 구성합니다. 다음 단계에서
<parameters>를 결과 문자열로 바꾸십시오.anonymize: URL에anonymize=true매개변수가 포함된 경우 모든 PII를 제거합니다. 그렇지 않으면 PII가 포함됩니다. 감사 로그를 가져올 때 PII 제외를 참조하십시오. Multi-tenant Cloud에서는 지원되지 않으며, 이 경우 PII를 포함한 모든 필드가 반환됩니다.numdays와startDate조합을 사용하여 가져올 로그의 날짜 범위를 구성합니다. 각 매개변수는 선택 사항이며 서로 상호 작용합니다.- 두 매개변수가 모두 없으면 오늘 로그만 가져옵니다.
numDays:startDate로부터 과거 며칠 치 로그를 가져올지 나타내는 정수입니다. 생략되었거나0으로 설정된 경우startDate하루치 로그만 가져옵니다. Multi-tenant Cloud 조직은 최대 7일치 감사 로그를 가져올 수 있습니다. 즉,numDays=9로 설정하더라도 실제로는numDays=7로 처리됩니다.startDate: 가져올 가장 최신 로그의 기준 날짜를 제어하며, 형식은startDate=YYYY-MM-DD입니다. 생략되었거나 오늘 날짜로 명시적으로 설정된 경우, 오늘부터numDays까지의 로그를 가져옵니다(Multi-tenant Cloud의 경우 최대7일).
<API-endpoint>?<parameters>형식으로 완전한 엔드포인트 URL을 구성합니다.- 웹 브라우저 또는 Postman, HTTPie, cURL과 같은 도구를 사용하여 완전한 API 엔드포인트에 대해 HTTP
GET요청을 실행합니다.
/wandb-audit-logs 디렉터리에 저장됩니다.
기본 인증 사용
Authorization 헤더를 Basic이라는 문자열 다음에 공백 한 칸과 username:API-KEY 형식의 문자열을 Base64로 인코딩한 값을 이어 붙인 문자열로 설정합니다. 즉, 사용자 이름과 API key를 : 문자로 구분해 하나의 문자열로 만든 다음, 그 결과를 Base64로 인코딩합니다. 예를 들어 demo:p@55w0rd로 인증하려면, 헤더는 Authorization: Basic ZGVtbzpwQDU1dzByZA==가 되어야 합니다.
감사 로그를 가져올 때 PII 제외하기
Self-Managed 및 Dedicated Cloud의 경우, W&B 조직 또는 인스턴스 관리자는 감사 로그를 가져올 때 PII를 제외할 수 있습니다. Multi-tenant Cloud의 경우, API 엔드포인트는 PII를 포함하여 감사 로그에 대한 관련 필드를 항상 반환합니다. 이는 설정으로 변경할 수 없습니다. PII를 제외하려면anonymize=true URL 매개변수를 전달하세요. 예를 들어, W&B 인스턴스 URL이 https://mycompany.wandb.io이고 지난 1주일 동안의 사용자 활동에 대한 감사 로그를 가져오면서 PII를 제외하려는 경우, 다음과 같은 API 엔드포인트를 사용합니다:
작업
| Action | Definition |
|---|---|
artifact:create | 아티팩트가 생성됩니다. |
artifact:delete | 아티팩트가 삭제됩니다. |
artifact:read | 아티팩트가 읽힙니다. |
project:delete | 프로젝트가 삭제됩니다. |
project:read | 프로젝트가 조회됩니다. |
report:read | 리포트가 조회됩니다. 1 |
run:delete_many | 여러 실행이 삭제됩니다. |
run:delete | 실행이 삭제됩니다. |
run:stop | 실행이 중지됩니다. |
run:undelete_many | 여러 실행이 휴지통에서 복원됩니다. |
run:update_many | 여러 실행이 업데이트됩니다. |
run:update | 실행이 업데이트됩니다. |
sweep:create_agent | 스윕 에이전트가 생성됩니다. |
team:create_service_account | 팀용 서비스 계정이 생성됩니다. |
team:create | 팀이 생성됩니다. |
team:delete | 팀이 삭제됩니다. |
team:invite_user | 사용자가 팀에 초대됩니다. |
team:uninvite | 사용자 또는 서비스 계정이 팀 초대에서 제거됩니다. |
user:create_api_key | 사용자 또는 서비스 계정용 API key가 생성됩니다. 1 |
user:create | 사용자가 생성됩니다. 1 |
user:deactivate | 사용자가 비활성화됩니다. 1 |
user:delete_api_key | 사용자 또는 서비스 계정용 API key가 삭제됩니다. 1 |
user:initiate_login | 사용자가 로그인을 시작합니다. 1 |
user:login | 사용자가 로그인합니다. 1 |
user:logout | 사용자가 로그아웃합니다. 1 |
user:permanently_delete | 사용자가 영구적으로 삭제됩니다. 1 |
user:reactivate | 사용자가 다시 활성화됩니다. 1 |
user:read | 사용자 프로필이 조회됩니다. 1 |
user:update | 사용자가 업데이트됩니다. 1 |
- 공개(Open 또는 Public) 프로젝트
report:read작업- 특정 조직에 연결되지 않은
User작업