注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
監査ログは、監査人が Foundry ユーザーによって実行されたアクションを理解するための主要な方法です。
Foundry の監査ログには、以下の情報が含まれています。
場合によっては、監査ログには、名前やメールアドレスなどの個人を特定する情報(PII)を含むユーザーに関する文脈情報が含まれることがあります。そのため、監査ログの内容は機密性が高く、必要なセキュリティ資格を持つ者だけが閲覧すべきです。
監査ログは、通常、顧客が所有するセキュリティ監視のための専用システム(「セキュリティ情報イベント管理」または SIEM ソリューション)に取り込まれます。
このガイドでは、監査ログの抽出と使用について、以下の 2 つのセクションで説明します。
以下で説明するメカニズムを使用して、顧客は自分自身の監査ログをキャプチャおよび監視することを強く推奨します。監査ログの監視 に追加のガイダンスがあります。
監査ログは、顧客のセキュリティインフラストラクチャと SIEM 要件に応じて、いくつかのメカニズムを介して下流の消費のために配信されます。Foundry サービスが生成した監査ログのバッチは、コンパイルされ、圧縮され、24 時間以内にログバケットに移動されます(環境によっては S3 が一般的ですが、環境によって異なります)。ここから、Foundry は Foundry への監査エクスポート で顧客に直接ログを配信して消費することができます。
監査ログは、組織ごとに、直接 Foundry データセットにエクスポートすることができます。設定のセットアップの一環として、組織管理者は、この監査ログデータセットが生成される Foundry ファイルシステム内の場所を選択します。
ログデータがデータセットに着陸したら、顧客は Foundry の Data Connection アプリケーションを介して外部 SIEM に監査データをエクスポートすることを選択できます。
監査ログの Foundry へのエクスポートの設定については、Palantir の担当者にお問い合わせください。
監査ログをエクスポートするには、対象の組織に audit-export:orchestrate-v2
操作が必要です。これは、コントロールパネルの 組織の権限 タブの下にある 組織管理者 の役割を介して付与することができます。詳細については、組織の権限 を参照してください。
Foundry への監査エクスポートの設定方法は以下の通りです。
データセットが作成された後、数時間かかってデータセットが入力されることがあります。これは、監査ログのバックログを処理するパイプラインが期待される動作です。
監査ログの機密性のため、作成されたデータセットは必要最低限の基準で制限され、必要な資格を持つ者だけがアクセスできるようにすることを強くお勧めします。マーキング を使用して、監査ログデータセットを制限し、識別情報や検索クエリなどの潜在的に機密性の高い使用詳細を表示できるプラットフォーム管理者のセットを指定します。
ビルド時に、監査ログデータセットは、新しいログが利用可能になると、特定の条件に従って追加します(変更の可能性あり)。
監査ログデータセットを初期プロジェクトから別のプロジェクトに移動するか、ゴミ箱に移動すると、ビルドが失敗します。エクスポートデータの権限を変更する必要がある場合は、新しい監査ログデータセットを作成してください。
監査ログデータセットをゴミ箱に移動すると、そのデータセットのさらなるビルドが停止します。ゴミ箱に移動したデータセットを復元しても、これらのビルドを再開する方法はありません。
監査ログデータセットには非常に大量のデータが含まれることがありますので、date
列を使用してこのデータセットを絞り込んでから、集計や可視化を実行することをお勧めします。この列でのフィルタリングは特にパフォーマンスが高く、特定の日付範囲にデータセットをすばやく絞り込むのに役立ちます。time
列でのフィルタリングには同じパフォーマンス最適化がないため、time
の代わりに date
を使用することをお勧めします。
日付以外のフィルタリングには、Pipeline Builder または Transforms を使用することをお勧めします。監査データセットは、まずフィルタリングせずに Contour で効果的に分析するには大きすぎる可能性があります。
Palantir 製品が生成するすべてのログは、構造化 ログです。これは、ダウンストリームシステムが依存できる特定のスキーマに従っていることを意味します。
Palantir の監査ログは、現在 audit.2
スキーマ で提供されており、一般的に "Audit V2" と呼ばれています。更新されたスキーマである audit.3
または "Audit V3" は開発中ですが、まだ一般に利用可能ではありません。
audit.2
および audit.3
スキーマの両方で、監査ログは生成するサービスによって異なる場合があります。これは、各サービスが異なるドメインについて推論しているため、それぞれ異なる懸念事項を記述する必要があるからです。このバリエーションは audit.2
でより顕著であることが説明されます。
サービス固有の情報は主に request_params
と result_params
フィールドに記録されます。これらのフィールドの内容は、ログを行うサービスとログされるイベントにより、その形状が変化します。
監査ログは、プラットフォーム内でユーザーが行ったすべてのアクションの精緻な記録と考えることができます。これは多くの場合、詳細さと精度の間の妥協で、詳細すぎるログはより多くの情報を含むかもしれませんが、それについての推論がより難しくなるかもしれません。
Palantir のログには、少ないサービス固有の知識でログを理解しやすくするための 監査カテゴリー と呼ばれる概念が含まれています。
監査カテゴリーを使用すると、監査ログは監査可能なイベントの集合として説明されます。監査カテゴリーは、 data
と metaData
と logic
などの一連のコアコンセプトに基づいており、それらのコンセプトに対するアクションを説明するカテゴリーに分けられます。例えば、 dataLoad
(システムからのデータの読み込み)、 metaDataCreate
(いくつかのデータを記述する新しいメタデータの作成)、 logicDelete
(システム内のいくつかのロジックの削除、ここでのロジックは2つのデータの間の変換を記述します)。
監査カテゴリーも audit.2
ログ内の緩やかな形から audit.3
ログ内のより厳格で豊かな形へとバージョン変更を経ています。詳細は下記を参照してください。
利用可能な audit.2
と audit.3
のカテゴリーの詳細リストについては、監査ログカテゴリー を参照してください。
監査ログは環境ごとに1つの ログアーカイブ に書き込まれます。監査ログが配信パイプラインを経由して処理されると、ユーザー ID フィールド (uid
および以下の スキーマ の otherUids
)が抽出され、ユーザーが対応する組織にマッピングされます。
特定のオーケストレーションのために組織された監査エクスポートは、その組織に帰属する監査ログに限定されます。サービス(非人間)ユーザーによって行われた行動は、これらのユーザーが組織のメンバーでないため、通常はどの組織にも帰属しないでしょう。ただし、 クライアント資格情報付与 を使用し、登録組織のみが使用するサードパーティアプリケーションのサービスユーザーは、その組織に帰属する監査ログを生成します。
audit.3
は、ログ配信の一部としてログの濃密化も提供します。つまり、監査配信パイプラインは、サービスによってキャプチャされ、ログバケットに保存された監査情報の上にメタデータ(通常はユーザーまたはリソースに関連する)を追加します。例えば、標準的な監査ログには特定のアクションを実行した uid
が含まれています。文脈化されたログでは、ユーザーの名前やメールをログの内容に追加することがあります。ログラインの初期生成と配信パイプラインでの処理の間に経過した時間により、少量のズレが発生することがあります。
audit.2
ログには、リクエストとレスポンスパラメーターの形状についての サービス間の保証はありません 。したがって、監査ログについての推論は通常、サービスごとに行う必要があります。
audit.2
ログは、検索を絞り込むのに役立つ可能性のある 監査カテゴリー を提示する場合があります。ただし、このカテゴリーはさらなる情報を含まず、監査ログの残りの内容を規定しません。また、 audit.2
ログに監査カテゴリーが含まれていることは 保証されていません 。カテゴリーが存在する場合、それらは request_params
内の _category
または _categories
フィールドに含まれます。
以下に audit.2
ログエクスポートデータセットのスキーマを提供します。
フィールド | タイプ | 説明 |
---|---|---|
filename | .log.gz | ログアーカイブからの圧縮ファイルの名前 |
type | string | 監査スキーマバージョンを指定 - "audit.2" |
time | datetime | RFC3339Nano UTC 日時文字列、例 2023-03-13T23:20:24.180Z |
uid | optional<UserId> | ユーザー ID(利用可能な場合); これは最も下流の呼び出し元 |
sid | optional<SessionId> | セッション ID(利用可能な場合) |
token_id | optional<TokenId> | API トークン ID(利用可能な場合) |
ip | string | 発生元の IP アドレスのベストエフォート識別子 |
trace_id | optional<TraceId> | Zipkin トレース ID(利用可能な場合) |
name | string | 監査イベントの名前、例えば PUT_FILE |
result | AuditResult | イベントの結果(成功、失敗など) |
request_params | map<string, any> | メソッド呼び出し時に知られているパラメーター |
result_params | map<string, any> | メソッド内で派生した情報、一般的には戻り値の一部 |
監査 V3 は現在開発中で、まだ一般には利用できません。
audit.3
ログは、ログの内容について推論する際に特定のサービスを理解する必要性を減らすために、監査カテゴリーのより厳格な使用を確立します。 audit.3
ログは以下の保証を念頭に作成されます:
dataLoad
はロードされる正確な リソース を記述します。audit.3
スキーマのトップレベルに昇格します。例えば、すべての名前付きリソースとすべてのユーザーは、リクエストとレスポンスのパラメーター内だけでなく、トップレベルで完全に文脈化されたエンティティとして存在します。これらの保証は、特定のログについて、(1)何の監査可能なイベントがそれを作成したか、および(2)それが正確に何のフィールドを含んでいるか、を語ることが可能です。これらの保証はサービスに依存しないものです。
以下に audit.3
スキーマを提供します。この情報は非包括的であり、変更の対象となります:
フィールド | タイプ | 説明 |
---|---|---|
environment | optional<string> | このログを生成した環境。 |
stack | optional<string> | このログが生成されたスタック。 |
service | optional<string> | このログを生成したサービス。 |
product | string | このログを生成した製品。 |
productVersion | string | このログを生成した製品のバージョン。 |
host | string | このログを生成したホスト。 |
producerType | AuditProducer | この監査ログがどのように生成されたか。例えば、バックエンド(SERVER)またはフロントエンド(CLIENT)から。 |
time | datetime | RFC3339Nano UTC 日時文字列、例 2023-03-13T23:20:24.180Z 。 |
name | string | 監査イベントの名前、例えば PUT_FILE。 |
result | AuditResult | リクエストが成功したか、失敗のタイプを示します。例えば、ERROR または UNAUTHORIZED。 |
categories | set<string> | この監査イベントによって生成されたすべての監査カテゴリー。 |
entities | list<any> | このログのリクエストとレスポンスのパラメーターに存在するすべてのエンティティ(例、リソース)。 |
users | set<ContextualizedUser> | この監査ログに存在するすべてのユーザー、文脈化されています。 ContextualizedUser : フィールド:
|
requestFields | map<string, any> | メソッド呼び出し時に知られているフィールド。 リクエストとレスポンスのフィールドのエントリは、上記で定義された categories フィールドに依存します。 |
resultFields | map<string, any> | メソッド内で派生した情報、通常は戻り値の一部。 |
origins | list<string> | リクエストに添付されたすべてのアドレス。この値は偽装可能です。 |
sourceOrigin | optional<string> | ネットワークリクエストの起源、TCPスタックを通じて確認される値。 |
origin | optional<string> | 発生元の機械のベストエフォート識別子。例えば、IPアドレス、Kubernetesノード識別子など。この値は偽装可能です。 |
orgId | optional<string> | uid が所属する組織、利用可能な場合。 |
userAgent | optional<string> | このログの起源となるユーザーのユーザーエージェント。 |
uid | optional<UserId> | ユーザー ID、利用可能な場合。これは最も下流の呼び出し元です。 |
sid | optional<SessionId> | セッション ID、利用可能な場合。 |
eventId | uuid | 監査可能なイベントの一意の識別子。これは同じイベントの一部であるログラインをグループ化するために使用できます。例えば、大量のバイナリレスポンスが消費者にストリームされる開始と終了で発行されるラインには同じ eventId が記録されます。 |
logEntryId | uuid | この監査ログラインの一意の識別子、システム内の他のログラインには繰り返されません。何らかのログラインは Foundry への取り込み中に重複することがあり、同じ logEntryId を持ついくつかの行が存在する場合があります。同じ logEntryId を持つ行は重複しており、無視できます。 |
sequenceId | uuid | 同じ eventId を共有するイベントに対するベストエフォートの順序フィールド。 |
traceId | optional<TraceId> | Zipkin トレース ID、利用可能な場合。 |