スコープ設定された API キー

NuGet をパッケージ配布用のより安全な環境にするために、スコープを追加して API キーを管理することができます。

ご利用の API キーにスコープを指定する機能により、ご利用の API に対する制御性を高めることができます。 次のことを実行できます。

  • 有効期間が異なるさまざまなパッケージに対して使用できる、スコープ設定された API キーを複数作成する。
  • API キーを安全に取得する。
  • 既存の API キーを編集してパッケージの適用性を変更する。
  • 他のキーを使用した操作を妨げることなく、既存の API キーを更新または削除する。

スコープ設定された API キーをサポートする理由

お客様がより粒度の細かいアクセス許可を持つことができるように、API キーのスコープをサポートしています。 これまで、NuGet ではアカウントに対して単一の API キーが提供されていましたが、この方法には次に示すいくつかの欠点がありました。

  • 1 つの API キーですべてのパッケージを制御する。 すべてのパッケージを管理するために使用される単一の API キーの場合は、複数の開発者がさまざまなパッケージに関与していてるときやそれらの開発者が公開元アカウントを共有するときに、キーを安全に共有することが困難です。
  • すべてのアクセス許可、または何もない。 API キーへのアクセス権を持つすべての人に、そのパッケージに対するすべての許可 (公開、プッシュ、およびリスト解除) が与えられます。 これは、多くの場合、複数のチームが存在する環境では望ましくありません。
  • 単一地点での障害。 単一の API キーでは、単一障害点も発生します。 キーが侵害されると、そのアカウントに関連付けられているすべてのパッケージが侵害される可能性があります。 API キーを更新することが、リークを塞ぎ、ご利用の CI/CD ワークフローの中断を回避する唯一の方法です。 さらに、個人を対象にして API キーへのアクセスを無効にしたい場合があります (たとえば、従業員が離職した場合など)。 現在、これを処理する適切な方法はありません。

Microsoft では、スコープ設定された API キーによって、既存のワークフローのいずれも中断することなくこれらの問題に対処することを試みています。

API キーの取得

  1. ご自分の nuget.org アカウントにサインインするか、まだ持っていなければ、アカウントを作成します。

  2. 右上にあるユーザー名を選択し、[API キー] を選択します。

  3. [作成] を選択して、キーの名前を指定します。

  4. [スコープの選択][プッシュ] を選択します。

  5. [パッケージの選択]>[glob パターン] に「*」と入力します。

  6. [作成] を選択します

  7. [コピー] を選択して新しいキーをコピーします。

    Screenshot that shows the new API key with the Copy link.

重要

  • API キーは誰にも教えないでください。 API キーはパスワードのようなものであり、API キーを使うと、誰でもお客様に代わってパッケージを管理できるようになります。 API キーが誤って漏えいした場合は、削除または再生成してください。
  • 後でもう一度キーをコピーすることはできないため、キーを安全な場所に保存しておいてください。 [API キー] ページに戻ったら、キーを再生成してコピーする必要があります。 パッケージをプッシュする必要がなくなった場合は、API キーを削除することもできます。

スコープを使用して、別の目的のために別の API キーを作成できます。 各キーには有効期限の時間枠があり、特定のパッケージ (またはの glob パターン) に対してスコープを設定できます。 また、各キーのスコープは、「新しいパッケージとパッケージ バージョンのプッシュ」、「新しいパッケージ バージョンのプッシュのみ」、「またはリストから外す」など、特定の操作に限定して設定します。

組織のパッケージ管理を行う担当者が必要なアクセス許可以外は持たないように、スコープを使用して、担当者ごとに API キーを作成できます。

スコープ設定された API キーの作成

ご自分の要件に基づいて複数の API キーを作成できます。 API キーは 1 つまたは複数のパッケージに適用できます。また、API キーには特定の特権を付与するさまざまなスコープを設定し、有効期限を関連付けることができます。

次の例では、有効期間が 365 日の Contoso service CI という名前の API キーを持っています。これを使用して特定の Contoso.Service パッケージに対してパッケージをプッシュすることができます。 これは、同じ組織内でさまざまなチームがそれぞれ異なるパッケージで作業していて、チームのメンバーには担当のパッケージに対してのみ特権を付与するキーが提供されるという典型的なシナリオです。 有効期限は、キーが古くなったり忘れられたりするのを防ぐためのメカニズムとして機能します。

Create API keys

glob パターンの使用

複数のパッケージで作業していて、管理すべきパッケージのリストが大きくなっている場合は、glob パターンを使用して複数のパッケージをまとめて選択する方法を選択できます。 たとえば、ID が Fabrikam.Service で始まるすべてのパッケージに対するキーに特定のスコープを付与したい場合は、[Glob パターン] テキスト ボックスに fabrikam.service.* と指定することでそれを行うことが可能です。

Create API keys - 2

glob パターンを使用して API キーのアクセス許可を決定する方法は、glob パターンに一致する新しいパッケージにも適用されます。 たとえば、Fabrikam.Service.Framework という名前の新しいパッケージをプッシュしようとしている場合、以前に作成したキーを使用してそれを行うことができます。これは、そのパッケージが glob パターン fabrikam.service.* に一致しているためです。

API キーを安全に取得

セキュリティ保護のため、新しく作成されたキーは画面上には決して表示されず、[コピー] ボタンを使用することでのみ利用できます。 同様に、ページが更新された後にキーにアクセスすることはできません。

Create API keys - 3

既存の API キーの編集

キー自体は変更せずにキーのアクセス許可とスコープを更新したい場合もあります。 単一のパッケージに対して特定のスコープが設定されたキーがある場合、1 つまたは複数の他のパッケージに同じスコープを適用することを選択できます。

Create API keys - 4

既存の API キーの更新または削除

アカウントの所有者はキーを更新することを選択できます。その場合、アクセス許可 (パッケージに対する)、スコープ、および有効期限は変わりありませんが、新しいキーが発行されて古いキーは使用できなくなります。 これは、古いキーを管理する場合や、API キーが漏洩する可能性がある場合に役立ちます。

Create API keys - 5

これらのキーが不要になった場合は、それらの削除を選択することもできます。 キーを削除すると、そのキーは削除されて使用できなくなります。

よく寄せられる質問

古い (レガシ) API キーはどうなりますか?

ご利用の古い (レガシ) API キーは引き続き機能し、ご自分が希望する限りは、機能させることができます。 ただし、それらのキーを使用してパッケージをプッシュしていない期間が 365 日を経過した場合、それらは廃止されます。 詳細については、ブログ記事「Changes to expiring API keys」(期限切れが近い API キーに対する変更点) を参照してください。 このキーは更新ができなくなっています。 レガシ キーを削除し、スコープ設定された新しいキーを代わりに作成する必要があります。

Note

このキーはすべてのパッケージに対するすべての権限を備え、期限切れになることはありません。 このキーを削除し、スコープ設定されたアクセス許可と明確な有効期限を備えた新しいキーを作成することを検討する必要があります。

API キーはいくつ作成できますか?

作成できる API キーの数に制限はありません。 ただし、どこで誰が使用しているのかが把握されていない古いキーが多くなってしまわないように、管理可能な個数に抑えることをお勧めします。

自分のレガシ API キーを削除したり、今すぐ使用を中止したりできますか?

はい。 ご自分のレガシ API キーは削除することができますし、おそらくそうする必要があります。

誤って削除した自分の API キーを取り戻すことはできますか?

いいえ。 削除されたら、新しいキーを作成するしかありません。 誤って削除したキーを元に戻すことはできません。

古い API キーは、API キーの更新を行っても引き続き機能しますか?

いいえ。 キーを更新すると、古いキーと同じスコープ、アクセス許可、および有効期限を持つ新しいキーが生成されます。 古いキー自体は存在しなくなります。

既存の API キーにさらにアクセス許可を付与することはできますか?

スコープを変更することはできませんが、それが適用可能なパッケージ リストを編集することはできます。

自分のキーのいずれかが期限切れになっているかどうか、期限が近づいているかどうかは、どうすればわかりますか?

いずれかのキーが期限切れになった場合は、ページ上部に警告メッセージを表示してお知らせします。 また、キーの有効期限が切れる 10 日前にアカウントの所有者に警告の電子メールを送信し、事前に対処できるようにしています。