AI API キーを監査する
このチュートリアルでは、OpenAI と Anthropic の API キーを監査し、注意が必要なキーのレポートをメールで受け取るフローを、コードを書かずに構築する方法を説明します。その過程で、OpenAI と Anthropic のアクションを、Filter、Date/time transform、Notification ノードと連結する方法を学びます。
OpenAI と Anthropic の Admin API アクションは Early preview 版として提供されています。アクセスをリクエストするには、サポートリクエストを送信してください。
Goal and objectives
-
Goal: すべての OpenAI Admin API キーと Anthropic API キーを一覧表示し、それらを「stale」(直近 90 日間未使用)と「never used」(未使用)に分類し、各カテゴリごとにフォーマットされたレポートをメール送信するワークフローを作成することです。フローは読み取り専用であり、いかなるキーも変更または無効化しません。
-
Objectives: このトリアルでは次の内容を学びます。
-
フローから OpenAI と Anthropic の Admin API アクションを呼び出す方法。
-
1 つのア クションの出力を Filter ノードで複数のブランチに分岐させる方法。
-
コードノードの代わりに Date/time transform ノードを使ってローリングの時間ウィンドウを構築する方法。
-
通知メッセージをテーブルとしてフォーマットし、報告対象がない場合は通知をスキップする方法。
-
次に、このチュートリアルで構築するフロー全体の例を示します。

Before you begin
OpenAI Admin API 接続と Anthropic Admin API 接続を作成してください。Anthropic 接続には Admin API キーを含める必要があります。これは API キー管理のオペレーションに必須です。
Start building
-
DoiT コンソール にサインインし、上部ナビゲーションのメガメニューから Automation and operations を選択し、CloudFlow を選択します。
-
Create CloudFlow を選択します。
Step 1: Add a trigger
What should start your flow ブロックで Manually start を選択します。後で custom schedule に切り替えて(例: 監査を毎週実行するようにして)もかまいませんが、フローの構築とテストを行う間は手動トリガーの方が簡単です。
Step 2: List OpenAI admin keys
-
What do you want to do ブロックで Perform an action を選択し、OpenAI を選択してから、
admin-api-keys-listアクションを選択します。 -
Connection タブで、OpenAI Admin API 接続を選択します。
-
Test タブで Test を選択してアクションを実行します。レスポンスには Admin API キーの
data配列が含まれます。各キーにはid、name、owner、last_used_atなどのフィールドが含まれており、フローの残りの部分でこれらを参照します。
Step 3: List Anthropic API keys
-
フローに別の Perform an action ノードを追加し、Anthropic を選択してから、
listApiKeysアクションを選択します。 -
Parameters タブで Add additional parameters を選択し、Limit を
100に設定して、1 回の実行で最大 100 個のキーを返すようにします。 -
Connection タブで Anthropic Admin API 接続を選択し、Test タブでアクションをテストします。

Step 4: Keep only OpenAI keys with usage
OpenAI キーの last_used_at フィールドは、そのキーが一度も使用されていない場合は空になります。使用履歴があるキーとないキーでは扱いを分ける必要があります。タイムスタンプが存在する場合のみ 90 日の閾値と比較できるため、まずフローでキー一覧を 2 つに分割します。
-
Filter ノードを追加し、名前を
OpenAI keys with usageにします。 -
Field でプラスアイコン(+)を選択し、
2. List OpenAI admin keys.dataを選択します。 -
Filter 1 で条件を
data.last_used_at is not nullに設定します。
このノードは、少なくとも一度は使用されたキーのみを出力します。
Step 5: Compute the stale threshold
キーが「stale」とみなされるのは、その最終使用日から 90 日を超えている場合、言い換えると last_used_at + 90 days がフロー実行時点よりも前である場合です。Date/time transform ノードは、この比較に使う値を計算し、レポート用に生のタイムスタンプを読みやすい日付形式に整形します。
-
Date/time transform ノードを追加し、名前を
Compute stale thresholdにします。 -
Select which field you want to transform でプラスアイコン(+)を選択し、
4. OpenAI keys with usage.last_used_atを選択します。 -
変換アクションを Add に設定し、Value を
90、Duration をDaysに設定し、新しいフィールド名をstaleAfterにします。 -
Add another transform を選択します。同じ
last_used_atフィールドを入力として選択し、変換アクションを Format に設定し、新しいフィールド名をlastUsedDateにして、日付フォーマットYYYY-MM-DDを選択します。
このノードは各キーを通過させつつ、staleAfter(最終使用日から 90 日後のタイムスタンプ)と lastUsedDate(人間が読みやすい日付)の 2 つの新しいフィールドを追加します。
Step 6: Filter for stale OpenAI keys
-
Filter ノードを追加し、名前を
Stale OpenAI keysにします。 -
Field で
5. Compute stale thresholdを選択します。 -
Filter 1 で条件を
staleAfter < Start of the flowに設定します。Start of the flow は、現在の実行が開始された時刻を表す組み込み変数です。
フロー実行時点でキーの staleAfter タイムスタンプが依然として過去であれば、そのキーは 90 日以上使用されていないことになります。
Step 7: Filter for never-used OpenAI keys
Never used OpenAI keys という名前の Filter ノードをもう 1 つ追加します。これは Step 4 の逆の条件になります。Field は再び 2. List OpenAI admin keys.data で、条件は data.last_used_at is null です。
このノードと Step 4 のノードはどちらも同じ OpenAI アクションの出力を参照している点に注意してください。1 つのノードの出力から必要なだけ多くの下流パスへブランチすることができます。
Step 8: Filter for never-used active Anthropic keys
-
Filter ノードを追加し、名前を
Never used active Anthropic keysにします。 -
Field で
3. List Anthropic API keys.dataを選択します。 -
Filter 1 で、AND で結合された 2 つの条件を追加します:
data.last_used_at is nullおよびdata.status == active。
ステータス条件により、すでに inactive または archived のキーは除外されるため、レポートには引き続きアクセス権を持つキーのみが表示されます。
Step 9: Send the reports
フローは 3 つのNotification ノードで終了します。カテゴリごとに 1 つずつ用意します。各カテゴリを別々の通知にすることで 、それぞれのメールを 1 つのフィルター結果に集中させることができます。
-
Send a message ノードを追加し、名前を
Notify: stale OpenAI keysにします。 -
Notification provider を Email に設定し、送信先アドレスと件名(例:
Stale OpenAI admin API keys (no usage in 90 days))を入力します。 -
Message に導入文を入力し、続いて
<table>ブロックを作成します。テーブル内の各行は列になります。列ヘッダーを入力してからコロンを付け、その後プラスアイコン(+)を選択して参照フィールドを挿入します。The following OpenAI admin API keys have not been used in the last 90 days:<table>Key name: {6. Stale OpenAI keys.name}Key ID: {6. Stale OpenAI keys.id}Owner: {6. Stale OpenAI keys.owner.name}Last used: {6. Stale OpenAI keys.lastUsedDate}</table> -
Don't send notification if no results を選択し、フィルターに一致したキーがない場合はメール自体をスキップするようにします。

-
残り 2 つのカテゴリについても同様に設定します。
-
Notify: never used OpenAI keys:7. Never used OpenAI keysノードからname、id、owner.nameフィールドを参照します。 -
Notify: never used Anthropic keys:8. Never used active Anthropic keysノードからname、id、created_atフィールドを参照します。
-
通知メッセージでは、参照している Filter を通過した各キーごとに 1 行がテーブルにレンダリングされ、値が空の場合はハイフンとして表示されます。利用可能なすべてのメッセージフォーマットオプションは、Notification ノードのページを参照してください。
Publish and run the flow
Publish を選択し、次に Run を選択して監査を開始します。Run history ページで各ステップを追跡し、ステップを展開して出力を確認できます。

実行が完了すると、最大 3 通のメール(該当するキーが見つかったカテゴリごとに 1 通)を受け取ります。各メールにはキーの名前、ID、所有者を含むテーブルが表示されるため、どのキーをローテーションまたは削除するかを判断できます。