カスタマー マネージド キーのトラブルシューティング

この記事は、4 部構成のチュートリアル シリーズのパート 4 です。 パート 1 では、カスタマー マネージド キーの概要、その機能、レジストリで有効にする前の考慮事項について説明します。 パート 2 では、Azure CLI、Azure portal、または Azure Resource Manager テンプレートを使用してカスタマー マネージド キーを有効にする方法について説明します。 パート 3 では、カスタマー マネージド キーのローテーション、更新、取り消しの方法について説明します。 この記事は、カスタマー マネージド キーに関する一般的な問題のトラブルシューティングと解決に役立ちます。

マネージド ID を削除するときのエラー

レジストリの暗号化を構成するために使用したユーザー割り当てまたはシステム割り当てのマネージド ID を削除しようとすると、エラーが表示されることがあります。

Azure resource '/subscriptions/xxxx/resourcegroups/myGroup/providers/Microsoft.ContainerRegistry/registries/myRegistry' does not have access to identity 'xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx' Try forcibly adding the identity to the registry <registry name>. For more information on bring your own key, please visit 'https://aka.ms/acr/cmk'.

暗号化キーを変更 (ローテーション) することはできません。 解決手順は、暗号化に使用した ID の種類によって異なります。

ユーザー割り当て ID の削除

ユーザー割り当て ID を削除しようとしたときにエラーが発生する場合は、次の手順に従います。

  1. az acr identity assign コマンドを使用してユーザー割り当て ID を再割り当てします。

  2. ユーザー割り当て ID のリソース ID を渡すか、ID がレジストリと同じリソース グループにある場合はその名前を使用します。

    例:

    az acr identity assign -n myRegistry \
        --identities "/subscriptions/mysubscription/resourcegroups/myresourcegroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myidentity"
    
  3. キーを変更し、別の ID を割り当てます。

  4. これで、元のユーザー割り当て ID を削除できるようになりました。

システム割り当て ID の削除

システム割り当て ID を削除しようとしたときにエラーが発生する場合は、ID の復元に関するサポートのための Azure サポート チケットを作成します。

キー ストア ファイアウォールを有効にした後のエラー

暗号化されたレジストリを作成した後で、Key Vaultまたは Managed HSM ファイアウォール、仮想ネットワーク、またはプライベート エンドポイントを有効にすると、イメージのインポートまたは自動キーローテーションで HTTP 403 またはその他のエラーが発生する可能性があります。 キー ストアのネットワーク構成で、Azure Container Registryがキーに到達できることを確認します。 Managed HSM のネットワーク オプションについては、Managed HSM のネットワーク セキュリティを参照してください。

Azure Container Registryがマネージド HSM にアクセスできるが、ポータル キー ピッカーでキーを一覧表示できない場合は、クライアントが構成されたネットワーク境界内にあることを確認するか、Enter key URI を使用してください。 Trusted-services バイパスでは、ポータル クライアントに Managed HSM ファイアウォール経由のアクセス権は付与されません。

ネットワーク設定を修正したら、 最初に暗号化で使用したマネージド ID とキーを再設定します。 カスタマー マネージド キーのローテーションに関する記事の手順を参照してください。

問題が解決しない場合は、Azure サポートにお問い合わせください。

Managed HSM キーを使用するときのエラー

暗号化キーが Managed HSM に格納されているときにレジストリの作成、キーのローテーション、またはイメージ操作が失敗する場合は、次の要件を確認します。

  • Managed HSM がプロビジョニングされ、アクティブ化されます。 キーの作成やロールの割り当てを含むデータ プレーン操作は、アクティブ化が完了するまで使用できません。
  • キーは、 wrapKey 操作と unwrapKey 操作をサポートする RSA-HSM キーです。
  • レジストリのマネージド ID には、Managed HSM Crypto Service Encryption User のローカル RBAC ロールがあります。 最小特権のロールについては、/keys/<key-name> で割り当てます。
  • キー URI は HTTPS を使用し、形式は https://<managed-hsm-name>.<managed-hsm-dns-suffix>/keys/<key-name> または https://<managed-hsm-name>.<managed-hsm-dns-suffix>/keys/<key-name>/<version>。
  • URI はキーを識別します。 シークレット、証明書、またはその他の Managed HSM オブジェクト パスの URI はサポートされていません。

特定のキーのロールの割り当てを確認するには、次を実行します。

az keyvault role assignment list \
  --hsm-name <managed-hsm-name> \
  --assignee-object-id <identity-principal-id> \
  --role "Managed HSM Crypto Service Encryption User" \
  --scope /keys/<key-name>

Managed HSM のローカル RBAC の変更が反映されるまでに数分かかる場合があります。 ロールの割り当てが正しいにもかかわらず検証が失敗する場合は、反映されるまで待ってからレジストリ操作を再試行してください。

ID の有効期限エラー

レジストリに関連付けられている ID は、有効期限切れを回避するために自動更新に設定されています。 レジストリから ID の関連付けを解除すると、CMK で使用されている ID を削除できないことを説明するエラー メッセージが表示されます。 ID を削除しようとすると、ID の自動更新ができなくなる恐れがあります。 成果物のプル/プッシュ操作は、ID の有効期限が切れるまで機能します (通常は 3 か月)。 ID の有効期限が切れた後、HTTP 403 で次のエラー メッセージが表示されます: "The identity associated with the registry is inactive." (レジストリに関連付けられている ID が非アクティブです。) "This could be due to attempted removal of the identity." (これは、ID の削除が試行されたことが原因である可能性があります。) "Reassign the identity manually" (ID を手動で再割り当てしてください)。

ID をレジストリに明示的に再割り当てする必要があります。

  1. az acr identity assign コマンドを実行して、ID を手動で再割り当てします。

    • 次はその例です。
    az acr identity assign -n myRegistry \
    --identities "/subscriptions/mysubscription/resourcegroups/myresourcegroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myidentity"
    

キー ストアまたはキーの誤削除

Key Vaultまたは Managed HSM リソース、またはレジストリの暗号化に使用するキーを削除すると、レジストリのコンテンツにアクセスできなくなります。 論理的な削除をキー コンテナーで有効化すると、削除したコンテナーやキー コンテナー オブジェクトを復旧してレジストリ操作を再開することができます。 Managed HSM では論理的な削除の復旧もサポートされていますが、論理的に削除された状態の間は引き続き料金が発生します。

カスタマー マネージド キー レジストリでAzure Policy修復が失敗する

変更効果を持つAzure Policyの割り当て (組み込みのポリシー Configure container registries to disable ARM audience token authentication.など) は、カスタマー マネージド キーで暗号化されたレジストリを自動的に修復できない場合があります。 修復タスクは失敗し、レジストリは非準拠のままです。 修復の展開では、次のような BadRequest エラーが報告されます。

Invalid encryption key vault property specified for registry <registry-name>. Property Identity and KeyIdentifier must be set when encryption is enabled. For more information on customer-managed keys, please visit 'https://aka.ms/acr/cmk'.

このエラーは既知の制限事項です。カスタマー マネージド キーで暗号化されたレジストリでは、自動 Modify 修復は現在サポートされていません。 修復では、レジストリ構成を再送信するときに保護された Key Vault の設定を保持できないため、レジストリは上記のエラーで更新を拒否し、非準拠のままです。

レジストリをコンプライアンス対応にするには、自動修復に依存するのではなく、ポリシーが直接対象とするプロパティを設定します。 プロパティを直接設定すると、その設定だけが変更され、暗号化構成はそのまま残されるため、レジストリは更新を受け入れます。 修復するポリシーに対応するコマンドを使用します。

Configure container registries to disable ARM audience token authentication. ポリシーについては、次を実行します。

az acr config authentication-as-arm update \
    -r myregistry \
    --resource-group myResourceGroup \
    --status disabled

コマンドを実行した後、ポリシー コンプライアンス スキャンをトリガーするか、次の評価を待ちます。 その後、レジストリは準拠していると報告します。 自動修復タスクでは、カスタマー マネージド キーで暗号化されたレジストリに対しても、失敗 状態が引き続き表示される場合があります。 プロパティを直接設定した後でも、その状態はレジストリのコンプライアンスに影響しません。

次の手順

削除と回復のシナリオについては、次を参照してください。