| W&B プラットフォームのデプロイメントタイプ | 監査ログへのアクセス方法 |
|---|---|
| Dedicated Cloud |
|
| Multi-tenant Cloud | Enterprise プランでのみ利用可能です。API を使用してのみ取得できます。 |
| Self-Managed | 10 分ごとにインスタンスレベルのバケットに同期されます。API を使用して取得することもできます。 |
監査ログの保持
- 特定の期間にわたって監査ログを保持する必要がある場合、W&B では、ストレージバケットまたは Audit Logging API を使用して、ログを定期的に長期保存用ストレージへ転送することを推奨します。
- Health Insurance Portability and Accountability Act of 1996 (HIPAA) の適用対象となる場合、監査ログは、必須の保存期間が終了する前に、いかなる内部または外部の主体によっても削除または変更できない環境で、最低 6 年間保持されなければなりません。HIPAA 準拠の Dedicated Cloud インスタンスで BYOB を使用している場合は、長期保存用ストレージを含む管理対象ストレージに対してガードレールを構成する必要があります。
監査ログスキーマ
| Key | Definition |
|---|---|
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 | (該当する場合)アクションに関連付けられたプロジェクト ID。 |
project_name | (該当する場合)アクションに関連付けられたプロジェクト名。 |
report_asset | (該当する場合)アクションに関連付けられたレポート ID。 |
report_name | (該当する場合)アクションに関連付けられたレポート名。 |
response_code | (該当する場合)アクションに対する HTTP レスポンスコード。 |
timestamp | イベントの時刻(RFC3339 形式)。たとえば、2023-01-23T12:34:56Z は UTC で 2023 年 1 月 23 日 12:34:56 を表します。 |
user_asset | (該当する場合)アクションが影響を与えるユーザーアセット(アクションを実行するユーザーではなく)。 |
user_email | (該当する場合)アクションが影響を与えるユーザーのメールアドレス(アクションを実行するユーザーのメールアドレスではなく)。 |
個人を特定できる情報(PII)
- Self-Managed および Dedicated Cloud では、組織管理者が監査ログを取得する際に PII を除外できます。
- Multi-tenant Cloud では、API エンドポイントは PII を含む監査ログ関連のフィールドを常に返します。これは設定で変更できません。
開始する前に
-
組織レベルの管理者は監査ログを取得できます。
403エラーが発生する場合は、あなた自身または利用しているサービスアカウントに十分な権限があることを確認してください。 -
Multi-tenant Cloud: 複数の Multi-tenant Cloud 組織に所属している場合は、監査ログの 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 を構成します。- Web ブラウザ、または Postman、HTTPie、cURL などのツールを使用して、完全修飾 API エンドポイントに対して HTTP
GETリクエストを実行します。
/wandb-audit-logs ディレクトリに保存されます。
ベーシック認証を使用する
Authorization ヘッダーを、文字列 Basic の後にスペースを置き、その後に username:API-KEY 形式の文字列を Base64 エンコードしたものに設定します。言い換えると、ユーザー名とAPIキーを : 文字で区切って連結し、その結果を Base64 エンコードした文字列にします。たとえば demo:p@55w0rd として認証する場合、ヘッダーは Authorization: Basic ZGVtbzpwQDU1dzByZA== となります。
監査ログ取得時に PII を除外する
Self-Managed および Dedicated Cloud では、W&B の組織またはインスタンス管理者は、監査ログを取得する際に PII を除外できます。Multi-tenant Cloud では、API エンドポイントは監査ログに関連する該当フィールド (PII を含む) を常に返します。これは変更できません。 PII を除外するには、URL パラメーターとしてanonymize=true を渡します。たとえば、W&B インスタンスの URL が https://mycompany.wandb.io で、直近 1 週間のユーザーアクティビティに関する監査ログを取得しつつ PII を除外したい場合は、次のような API エンドポイントを使用します。
Actions
| Action | Definition |
|---|---|
artifact:create | アーティファクトが作成されます。 |
artifact:delete | アーティファクトが削除されます。 |
artifact:read | アーティファクトが読み取られます。 |
project:delete | プロジェクトが削除されます。 |
project:read | プロジェクトが読み取られます。 |
report:read | レポートが読み取られます。 1 |
run:delete_many | 複数の run が一括削除されます。 |
run:delete | run が削除されます。 |
run:stop | run が停止されます。 |
run:undelete_many | 複数の run がゴミ箱から復元されます。 |
run:update_many | 複数の run が一括更新されます。 |
run:update | run が更新されます。 |
sweep:create_agent | スイープエージェントが作成されます。 |
team:create_service_account | チーム用のサービスアカウントが作成されます。 |
team:create | チームが作成されます。 |
team:delete | チームが削除されます。 |
team:invite_user | チームにユーザーが招待されます。 |
team:uninvite | ユーザーまたはサービスアカウントのチームへの招待が取り消されます。 |
user:create_api_key | ユーザーまたはサービスアカウント用の APIキー が作成されます。 1 |
user:create | ユーザーが作成されます。 1 |
user:deactivate | ユーザーが無効化されます。 1 |
user:delete_api_key | ユーザーまたはサービスアカウント用の APIキー が削除されます。 1 |
user:initiate_login | ユーザーがログインを開始します。 1 |
user:login | ユーザーがログインします。 1 |
user:logout | ユーザーがログアウトします。 1 |
user:permanently_delete | ユーザーが完全に削除されます。 1 |
user:reactivate | ユーザーが再有効化されます。 1 |
user:read | ユーザープロフィールが読み取られます。 1 |
user:update | ユーザーが更新されます。 1 |
- オープンまたはパブリックなプロジェクト
report:readアクション- 特定の組織に紐付いていない
Userアクション