Azure Stack Hub でサービス プリンシパルの資格情報を Key Vault に格納する
通常、Azure Stack Hub におけるアプリの開発では、デプロイ前にサービス プリンシパルを作成し、その資格情報を使用して認証を行う必要があります。 しかし、保存したサービス プリンシパルの資格情報を失ってしまう場合があります。 この記事では、サービス プリンシパルを作成し、その値を後で取り出せるよう Azure Key Vault に格納する方法について説明します。
Key Vault の詳細については、「Azure Stack Hub での Key Vault の概要」を参照してください。
前提条件
- Azure Key Vault サービスを含むオファーをサブスクライブします。
- PowerShell をインストールし、Azure Stack Hub で使うように構成します。
Azure Stack Hub の Key Vault
Azure Stack Hub の Key Vault は、クラウド アプリやクラウド サービスで使用される暗号化キーとシークレットを保護するのに役立ちます。 Key Vault を使用することにより、キーとシークレットを暗号化することができます。
キー コンテナーを作成するには、次の手順に従います。
Azure Stack Hub ポータルにサインインします。
ダッシュボードから、[+ リソースの作成]、[セキュリティ + ID]、[Key Vault] の順に選択します。
[Key Vault の作成] ウィンドウで、Vault に名前を割り当てます。 Vault の名前には、英数字とハイフン (-) 文字のみを含めることができます。 名前を数字で始めることはできません。
使用可能なサブスクリプションの一覧から選択します。
既存のリソース グループを選択するか、新しいものを作成します。
[価格レベル] を選択します。
既存のアクセス ポリシーのいずれかを選択するか、新しいアクセス ポリシーを作成します。 この Vault に対して操作を実行するための権限を、アクセス ポリシーを通じて、ユーザー、アプリケーション、またはセキュリティ グループに付与できます。
必要に応じて、[高度なアクセス ポリシー] を選んで機能へのアクセスを有効にします。
設定を構成したら、 [OK] を選択し、 [作成] を選択します。 キー コンテナーのデプロイが開始されます。
サービス プリンシパルの作成
Azure portal で Azure アカウントにサインインします。
[MICROSOFT ENTRA ID] を選択し、[アプリの登録]、[追加] の順に選択します。
アプリの名前と URL を指定します。 作成するアプリの種類として、[Web アプリ/API] または [ネイティブ] を選択します。 値を設定したら、[作成] をクリックします。
[Active Directory]、[アプリの登録] を順に選択し、目的のアプリケーションを選択します。
アプリケーション ID をコピーし、アプリ コードに保存します。 サンプル アプリでは、アプリケーション ID を参照するときにクライアント ID を使用します。
認証キーを生成するには、[キー] を選択します。
キーの説明を入力し、期間を指定します。
[保存] を選択します。
[保存] をクリックした後、利用可能になったキーをコピーします。
Key Vault 内にサービス プリンシパルを格納する
Azure Stack Hub のユーザー ポータルにサインインした後、先ほど作成したキー コンテナーを選択して、[シークレット] タイルを選択します。
[シークレット] ウィンドウで [生成/インポート] を選択します。
[シークレットの作成] ウィンドウで、オプションの一覧から [手動] を選択します。 証明書を使用してサービス プリンシパルを作成した場合、ドロップダウン リストから証明書を選択し、ファイルをアップロードします。
キーの名前として、サービス プリンシパルからコピーしたアプリケーション ID を入力します。 キーの名前には、英数字とハイフン (-) 文字のみを含めることができます。
サービス プリンシパルから [値] タブにキーの値を貼り付けます。
[コンテンツの種類] に [サービス プリンシパル] を選択します。
キーの [アクティブ化した日] と [有効期限] の値を設定します。
[作成] を選択してデプロイを開始します。
シークレットが正常に作成された後、そこにサービス プリンシパルの情報が格納されます。 いつでも [シークレット] からそれを選択し、そのプロパティを表示したり変更を加えたりすることができます。 [プロパティ] セクションにはシークレット識別子が含まれます。これは、外部アプリがこのシークレットにアクセスするために使う Uniform Resource Identifier (URI) です。