NuGet をパッケージ配布のより安全な環境にするには、スコープを追加して API キーを制御できます。
API キーにスコープを提供する機能により、API をより適切に制御できます。 次のようにすることができます。
- 有効期限が異なるさまざまなパッケージに使用できる複数のスコープ付き API キーを作成します。
- API キーを安全に取得します。
- 既存の API キーを編集して、パッケージの適用性を変更します。
- 他のキーを使用して操作を妨げずに、既存の API キーを更新または削除します。
スコープ付き API キーをサポートする理由
よりきめ細かなアクセス許可を持つことができるように、API キーのスコープがサポートされています。 以前は、NuGet はアカウントに 1 つの API キーを提供していましたが、そのアプローチにはいくつかの欠点がありました。
- すべてのパッケージを制御するための 1 つの API キー。 すべてのパッケージを管理するために使用される 1 つの API キーでは、複数の開発者が異なるパッケージに関与し、パブリッシャー アカウントを共有するときに、キーを安全に共有することは困難です。
- すべての権限を許可するか、すべてを拒否する。 API キーにアクセスできるユーザーは、パッケージに対するすべてのアクセス許可 (発行、プッシュ、リスト解除) を持ちます。 これは、多くの場合、複数のチームを持つ環境では望ましくありません。
- 単一障害点。 1 つの API キーは、単一障害点も意味します。 キーが侵害された場合、アカウントに関連付けられているすべてのパッケージが侵害される可能性があります。 API キーの更新は、リークをプラグインし、CI/CD ワークフローの中断を回避する唯一の方法です。 また、個人の API キーへのアクセスを取り消したい場合もあります (たとえば、従業員が組織を離れる場合など)。 今日、これを処理するクリーンな方法はありません。
スコープ付き API キーを使用して、既存のワークフローが中断しないようにしながら、これらの問題に対処しようとします。
API キーを取得する
nuget.org アカウントにサインイン するか、まだアカウントがない場合は アカウントを作成 します。
右上にあるユーザー名を選択し、[ API キー] を選択します。
[ 作成] を選択し、キーの名前を指定します。
スコープの選択でプッシュを選択します。
[ パッケージの選択>グローバル パターン] に「*」と入力します。
を選択してを作成します。
[ コピー] を選択して新しいキーをコピーします。
Important
- API キーは常にシークレットのままにします。 API キーは、すべてのユーザーが自分の代わりにパッケージを管理できるようにするパスワードに似ています。 誤って表示された場合は、API キーを削除または再生成します。
- 後でもう一度キーをコピーできないため、キーを安全な場所に保存します。 API キー ページに戻った場合は、キーを再生成してコピーする必要があります。 パッケージをプッシュする必要がなくなった場合は、API キーを削除することもできます。
スコープを 使用すると、さまざまな目的で個別の API キーを作成できます。 各キーには有効期限があり、特定のパッケージまたは glob パターンにキーのスコープを設定できます。 また、各キーのスコープは、新しいパッケージとパッケージ バージョンのプッシュ、新しいパッケージ バージョンのプッシュのみ、またはリストの解除など、特定の操作に限定します。
スコープを使用すると、組織のパッケージを管理するさまざまなユーザーに対して API キーを作成し、必要なアクセス許可のみを持つことができます。
スコープ付き API キーを作成する
要件に基づいて複数の API キーを作成できます。 API キーは、1 つ以上のパッケージに適用でき、特定の特権を付与するさまざまなスコープを持ち、有効期限が関連付けられています。
次の例では、特定のContoso service CI パッケージのパッケージのプッシュに使用できる Contoso.Service という名前の API キーがあり、365 日間有効です。 これは、同じ組織内の異なるチームが異なるパッケージで作業し、チームのメンバーが、作業しているパッケージに対してのみ特権を付与するキーを提供する一般的なシナリオです。 有効期限は、古いキーまたは忘れられたキーを防ぐためのメカニズムとして機能します。
glob パターンを使用する
複数のパッケージで作業していて、管理するパッケージの大規模なリストがある場合は、globbing パターンを使用して複数のパッケージを一緒に選択できます。 たとえば、ID が Fabrikam.Service で始まるすべてのパッケージのキーに特定のスコープを付与する場合は、[fabrikam.service.*] テキスト ボックスにを指定します。
glob パターンを使用して API キーのアクセス許可を決定すると、glob パターンに一致する新しいパッケージにも適用されます。 たとえば、 Fabrikam.Service.Frameworkという名前の新しいパッケージをプッシュしようとすると、パッケージが glob パターンの fabrikam.service.*と一致するため、前に作成したキーでプッシュできます。
API キーを安全に取得する
セキュリティのため、新しく作成されたキーは画面に表示されません。 [コピー ] ボタンを使用してのみ使用できます。 同様に、ページが更新された後は、キーにアクセスできません。
既存の API キーを編集する
キー自体を変更せずに、キーのアクセス許可とスコープを更新することもできます。 1 つのパッケージに特定のスコープを持つキーがある場合は、1 つまたは複数の他のパッケージに同じスコープを適用することを選択できます。
既存の API キーを更新または削除する
アカウント所有者はキーの更新を選択できます。その場合、アクセス許可 (パッケージ上)、スコープ、有効期限は変わりませんが、新しいキーが発行され、古いキーは使用できなくなります。 これは、古いキーの管理や、API キーの漏洩の可能性がある場合に役立ちます。
これらのキーが不要になった場合は、削除することもできます。 キーを削除すると、キーが削除され、使用できなくなります。
FAQs
古い (レガシ) API キーはどうなりますか?
古い API キー (レガシ) は引き続き機能し、必要に応じて機能します。 ただし、これらのキーがパッケージをプッシュするために 365 日を超えて使用されていない場合、これらのキーは廃止されます。 詳細については、期限 切れの API キーの変更に関するブログ投稿を参照してください。 このキーは更新できなくなりました。 代わりに、レガシ キーを削除し、新しいスコープ付きキーを作成する必要があります。
注
このキーはすべてのパッケージに対するすべてのアクセス許可を持ち、期限切れになることはありません。 このキーを削除し、スコープ付きアクセス許可と明確な有効期限を持つ新しいキーを作成することを検討してください。
いくつの API キーを作成できますか?
作成できる API キーの数に制限はありません。 ただし、管理しやすい数に抑えて、使用している場所とユーザーを把握していない古いキーが多数ないようにすることをお勧めします。
レガシ API キーを削除するか、今すぐ使用を中止できますか?
Yes. レガシ API キーは削除できます。また、おそらく削除する必要があります。
誤って削除した API キーを取得できますか?
No. 削除後は、新しいキーのみを作成できます。 誤って削除されたキーに対する回復は不可能です。
古い API キーは、API キーの更新時に引き続き機能しますか?
No. キーを更新すると、古いキーと同じスコープ、アクセス許可、有効期限を持つ新しいキーが生成されます。 古いキーは存在しなくなります。
既存の API キーにさらにアクセス許可を付与できますか?
スコープを変更することはできませんが、適用可能なパッケージ リストを編集することはできます。
いずれかのキーの有効期限が切れているか、有効期限が切れているかどうかを確認するにはどうすればよいですか?
キーの有効期限が切れた場合は、ページの上部にある警告メッセージでお知らせします。 また、キーの有効期限の 10 日前にアカウント所有者に警告メールを送信し、事前に適切に対処できるようにします。