Azure Key Vault から Azure Container Apps に証明書をインポートする (プレビュー)

コンテナー アプリの証明書を管理して更新、書き換え、監視を行うように、Azure Key Vault を設定することができます。 Key Vault を使用しない場合、証明書を手動で管理する必要があります。つまり、一元的な場所で証明書を管理できず、ライフサイクルの自動化や通知を利用できません。

前提条件

  • Azure Key Vault: Key Vault リソースを作成します。

  • Azure CLI: Azure Container Apps 拡張機能バージョン 0.3.49 以上で更新された Azure CLI が必要です。 az extension add コマンドを使用して最新バージョンをインストールします。

    az extension add --name containerapp --upgrade --allow-preview`
    
  • マネージド ID: Container Apps 環境でマネージド ID を有効にします。

シークレットの構成

証明書を格納するには Azure Key Vault インスタンスが必要です。 Key Vault インスタンスを次のように更新します。

  1. Azure Portalを開きます。

  2. Azure Container Apps 環境に移動します。

  3. [設定] から [アクセス制御 (IAM)] を選択します。

  4. [ロール] タブで、自分を "キー コンテナー管理者" として設定します。

  5. 証明書の詳細に移動し、[シークレット識別子] の値をコピーし、後の手順で使用するためにテキスト エディターに貼り付けます。

    Note

    証明書の特定のバージョンを取得するには、シークレット識別子にバージョン サフィックスを含めます。 最新バージョンを取得するには、識別子からバージョン サフィックスを削除します。

Key Vault 証明書を有効にして構成する

  1. Azure portal を開いて、お使いのキー コンテナーに移動します。

  2. [オブジェクト] セクションで、[証明書] を選択します。

  3. 使用する証明書を選択します。

  4. [アクセス制御 (IAM)] セクションで、[ロールの割り当ての追加] を選択します。

  5. 次のロールを追加します: "キー コンテナー証明書責任者""キー コンテナー シークレット責任者"

  6. 証明書の詳細に移動し、[シークレット識別子] の値をコピーします。

  7. 後の手順で使用するために、識別子をテキスト エディターに貼り付けます。

環境レベルのマネージド ID にロールを割り当てる

  1. Azure portal を開き、証明書をインポートする Azure Container Apps 環境のインスタンスを見つけます。

  2. [設定] から [ID] を選択します。

  3. [システム割り当て済み] タブで、[状態] スイッチを見つけ、[オン] を選択します。

  4. [保存] を選択し、[システム割り当てマネージド ID の有効化] ウィンドウが表示されたら、[はい] を選択します。

  5. [アクセス許可] ラベルの下で [Azure ロールの割り当て] を選択して、ロールの割り当てウィンドウを開きます。

  6. [ロールの割り当ての追加] を選択し、次の値を入力します。

    プロパティ
    Scope "Key Vault" を選択します。
    サブスクリプション Azure サブスクリプションを選択します。
    リソース コンテナーを選択します。
    ロール "キー コンテナー シークレット ユーザー"* を選択します。
  7. [保存] を選択します。

RBAC とレガシ アクセス ポリシーの比較に関する詳細については、「Azure ロールベースのアクセス制御 (Azure RBAC) とアクセス ポリシーの比較」を参照してください。

証明書のインポート

コンテナー アプリによるコンテナーの読み取りを認可したら、az containerapp env certificate upload コマンドを使用してコンテナーを Container Apps 環境にインポートすることができます。

次のコマンドを実行する前に、<> かっこで囲まれたプレースホルダー トークンを独自の値に置き換えてください。

az containerapp env certificate upload \
  --resource-group <RESOURCE_GROUP> \
  --name <CONTAINER_APP_NAME> \
  --akv-url <KEY_VAULT_URL> \
  --certificate-identity <CERTIFICATE_IDENTITY>

コマンド パラメーターの詳細については、次の表を参照してください。

パラメーター 説明
--resource-group リソース グループ名。
--name コンテナー アプリ名。
--akv-url シークレット識別子の URL。 この URL は、前の手順で控えておいた値です。
--certificate-identity マネージド ID の ID。 この値は、system か、ユーザー割り当てマネージド ID の ID にすることができます。

トラブルシューティング

証明書をインポートするときにエラー メッセージが表示された場合は、次の手順に従って、行った操作を確認してください。

  • 証明書と環境レベルのマネージド ID の両方について、アクセス許可が正しく構成されていることを確認します。

    • "キー コンテナー シークレット責任者" と "キー コンテナー証明書責任者" の両方のロールを割り当てる必要があります。
  • 証明書にアクセスするための正しい URL を使用していることを確認します。 "シークレット識別子" の URL を使用する必要があります。