API キーについて
アプリケーション・プログラミング・インターフェース・キー (API キー) は、呼び出し側のアプリケーションまたはユーザーを識別するために API に渡される固有コードです。 API キーは、API の使用方法を追跡および制御する (例えば、API の悪用または不正利用を防止する) ために使用されます。 API キーは、多くの場合、認証のための固有 ID と秘密トークンの両方として機能し、そのキーに関連付けられている ID に固有の一連のアクセス権限が割り当てられます。
API キーを表示するには、 IBM Cloud コンソールの Manage > Access (IAM) > API keys を開きます。
ユーザーの IBM Cloud API キー
IBM Cloud® の API キーは、ユーザーの ID に関連付けられています。 ユーザーが作成する各APIキーは、そのユーザーがメンバーであるすべてのアカウント割り当てられるのと同じアクセス権を持っています。 APIキーはすべてのユーザー・アクセスを継承するので、そのユーザーが権限を持っているすべてのアカウントリソースにアクセスする能力を提供できる。 このため、ユーザーAPIキーはユーザー名とパスワードと同様に扱われ、決して共有されてはならない。
機能IDの使用
ユーザーの IBM Cloud API キーを作成し、機能 ID と関連付けることができます。 機能 ID は、プログラム、アプリケーション、サービスを表わすために作成されるユーザー ID です。 機能 ID をアカウントに招待して、特定のリソースやアプリケーションとの対話など、特定の目的に限定したアクセス権限を割り当てることができます。
サービスが他のサービスやアプリケーションと相互作用するためにユーザーAPIキーを必要とする場合、機能IDユーザーAPIキーを使用してください。 機能IDに関連付けられたAPIキーを使用することで、そのサービスに必要なアクセスのみを提供します。 実ユーザIDのAPIキーをサービスと共有すると、そのサービスは、ユーザが複数のアカウントアクセスできるリソースにアクセスできるようになる。
APIキーを削除できるのは、APIキーが関連付けられているユーザーと、IAMサービスの管理者のみです。 コマンドラインインターフェイス(CLI)または自動化の一部として、 IBM Cloud APIキーを使用して、ユーザーIDとしてログインすることができます。 また、クラシック・インフラストラクチャー API にアクセスするために IBM Cloud API キーを使用することもできます。
ユーザー ID に関連付けられた API キーの使用について詳しくは、ユーザー API キーの管理を参照してください。
その他のタイプの API キー
IBM Cloud APIキーの他に、他のタイプのAPIキーもご利用いただけます:
- サービス ID の API キー
- サービス ID は、IBM Cloud の内部または外部のアプリケーションを IBM Cloud サービスに接続するために使用されます。 サービス ID API キーは、特定のサービス ID に割り当てられているすべてのアクセス権限を継承します。 詳しくは、サービス ID の API キーの管理を参照してください。
- クラシック・インフラストラクチャー API キー
- クラシック・インフラストラクチャー API キーは、クラシック・インフラストラクチャー・サービスの API を呼び出すために使用されます。 クラシック・インフラストラクチャー API キーは一度に 1 つしか作成できません。 詳しくは、クラシック・インフラストラクチャー API キーの管理を参照してください。
- サービス固有の API キー
- IBM Cloud の一部のサービスでは、サービスを操作するときに API キーを利用できます。 これらは、サービスIDに関連付けられた自動生成APIキーである。 例えば、リソース一覧ページから Watson サービスの製品詳細を表示している場合、サービス資格情報ページでそのサービスに固有の API キーとシークレットを含む資格情報を作成できます。
クラシック・インフラストラクチャー API にアクセスするために IBM Cloud API キーを使用することもできます。
APIキーのセキュリティ・ベスト・プラクティスを理解する
APIキーに関する以下のベストプラクティスを実施することで、ワークロードのセキュリティと安全性を高めることができる:
- 暴露リスクを最小限にするため、コードにキーを埋め込むことは避ける。
- Secrets Manager、これを自動化することができる。 詳しくは、 秘密のローテーションを ご覧ください。
- 権限を割り当てる際には、最小権限の原則を適用する。
- タイムリーな通知を受け取るために、セキュリティ連絡先を常に最新の状態に保つ。
- 不審なAPIキーの使用を Activity Tracker Event Routing。
- 必要に応じて、APIキーに有効期限を設定する。
- リークされたAPIキーが発見された場合、自動的にAPIキーを無効化または削除するリークアクション設定を行う。
API キーの処理
自分のユーザー・アイデンティティに関連付けられている IBM Cloud API キー、またはアカウント内の他のユーザーのために管理するアクセス権を持っている API キーを管理するには、 IBM Cloud コンソールの Manage > Access (IAM) > API keys に進みます。
IBM Cloud API キーのページでは、自分の IBM Cloud API キーを作成、編集、削除できます。 また、ユーザー階層内のすべてのクラシック・インフラストラクチャー API キーを管理することもできます。 あなたがアカウント所有者、またはアカウント内の他のユーザーのAPIキーを管理するために必要なアクセス権を持つユーザーである場合、あなたはそれらのAPIキーをリストし、管理するためにビューフィルタを使用することができます。
APIキーの有効期限
APIキーを作成または更新する際に、有効期限を設定することができます。 有効期限が指定されている場合、その日を過ぎるとAPIキーは無効になる。 有効期限が切れたAPIキーは、有効期限が切れてから90日後に自動的に削除されます。 APIキーの有効期限が切れる数日前に、 IBM Cloud 通知サービスを通じて、APIキーを所有するユーザー(ユーザーレベルのキーの場合)またはアカウント所有者(サービスIDのAPIキーの場合)に通知が送信されます。
漏洩したAPIキーの保護
APIキーは、 IBM Cloud のリソースやサービスへのアクセスを提供する強力なクレデンシャルです。 これらの鍵が公開リポジトリ、ログ、その他の場所で不注意に公開されると、重大なセキュリティ・リスクを引き起こす可能性がある。 悪質な行為者は、流出した認証情報を求めて公開リポジトリを積極的にスキャンし、不正アクセス、暗号マイニング操作、その他の悪質な活動のために、多くの場合、公開から数分以内に素早く悪用することができる。 鍵に関連付けられたユーザーIDやサービスIDに付与されたアクセスによっては、悪意ある行為者は以下のことができる:
- データへのアクセスや削除
- ビットコインの採掘に使用される可能性のあるリソースを含め、お客様のアカウントリソースを提供します。
- アカウント内のサービスでその他のアクションを実行します。
- アカウント内に追加のIDまたはAPIキーを作成し、漏洩したキーをローテーションした後でも永続的にアクセスできるようにする。
IBM Cloud は、 GitHub や GitLab といったプラットフォームのシークレットスキャン機能を活用し、公開されたAPIキーの特定を支援する。 鍵が流出したと判断された場合、あなたやセキュリティ・チームは、その鍵に設定した処分に基づいて、適切な措置を迅速に講じることができます。 設定によって、 IBM は以下のアクションを取ることができる:
- 漏洩したキーを無効にする
- APIキーは直ちに IBM、調査して次のステップを決定する間、不正使用を防止します。 アセスメントが行われ、鍵の露出によるリスクが低い場合を除き、ほとんどの鍵にこの方法が推奨される。 キーが無効になると、アプリケーションからクラウド・サービスへのAPI呼び出しが失敗し、障害が発生する可能性がある。
- 漏洩したキーを削除する
- APIキーは検出され次第、 IBM によって永久に削除される。 これは最強の保護を提供するが、新しいキーを作成する必要がある。 キーが削除されると、アプリケーションからクラウド・サービスへのAPI呼び出しが失敗し、障害が発生する可能性がある。
- 何も実行しない
- 自動的な措置は取られない。 それでも露出に関する通知を受け取るかもしれないが、手動で問題に対処しなければならない。
IBM では、アセスメントが行われ、アクセスが制限されているために鍵が公開された場合のリスクが低 い場合を除き、ほとんどの鍵に「Disable」オプションを使用することを推奨している。 生産上の要件により、特定のAPIキーに対して「何もしない」設定が必要な場合は、 IBM、定期的にセキュリティ体制を分析し、頻繁なキーローテーションなどの代替コントロールを実装し、環境が許す限り自動保護を有効にする計画を立てることをお勧めします。
詳細については、「 漏洩したユーザーAPIキーのレビュー 」または「 漏洩したサービスID APIキーのレビュー 」を参照してください。
API キーを管理するために必要なアクセス権限
デフォルトでは、必ず、自分の API キーを作成し、必要に応じてそれらを更新および削除するアクセス権限を持っています。 また、自分のクラシック・インフラストラクチャー APIキーと、 クラシック・インフラストラクチャーユーザー階層で自分が先祖にあたるユーザーのクラシック・インフラストラクチャー APIキーを管理することもできます。
APIキーの作成を制限する IAM アカウント設定が有効な場合、明示的なアクセスが割り当てられない限り、 アカウント所有者を含むアカウント内の全員がAPIキーの作成をブロックされる。 詳しくは、ユーザーによる API キーの作成操作の制限を参照してください。
アカウント所有者である場合、または必要なアクセス権限を持つユーザーの場合、「API キー」ページで**「表示」**のフィルターを使用して他のユーザーの API キーやサービス ID の API キーにアクセスできます。 割り当てられているアクセス権限に応じて、API キーを編集したり削除したりできます。 表示されるフィルター・オプションは、自分に表示権限と管理権限がある API キーのタイプに対するものだけです。
| フィルター・オプション | 表示される API キー | 必要なアクセス権限 | 許可されるアクション |
|---|---|---|---|
| 自分の IBM Cloud API キー | 自分の IBM Cloud API キー | アクセス権限不要 | 表示、作成、編集、削除 |
| すべてのユーザーの IBM Cloud API キー | アカウントのすべてのユーザーによって作成されたすべての IBM Cloud API キー | IAM Identity サービスに対する管理者役割 | 表示、編集、および削除 |
| すべてのサービス ID API キー | アカウントのサービス ID のために作成されたすべての API キー | IAM Identity サービスに対する管理者役割 | 表示、編集、および削除 |
| クラシック・インフラストラクチャー API キー | 自分のクラシック・インフラストラクチャー API キーおよびユーザー階層で自分の子孫に相当するユーザーのクラシック・インフラストラクチャー API キー | アクセス権限は不要、ただし、ユーザー階層で自分が祖先であること | 詳細表示および削除 |