Azure コンテナー レジストリからの成果物のエクスポートを無効にする

組織内のレジストリ ユーザーが故意に、または誤って仮想ネットワークの外部に成果物をリークするのを防ぐには、エクスポートを無効にするようにレジストリの "エクスポート ポリシー" を構成できます。

エクスポート ポリシーは、Premium コンテナー レジストリ用に API バージョン 2021-06-01-preview で導入されたプロパティです。 exportPolicy プロパティの状態が disabled に設定されていると、ユーザーが次の操作を試みたとき、ネットワーク制限付きレジストリからの成果物のエクスポートがブロックされます。

Note

成果物のエクスポートを無効にしても、許可されているユーザーが仮想ネットワーク内のレジストリにアクセスして、成果物をプルしたり、他のデータ プレーン操作を実行したりすることは妨げられません。 この使用を監査するため、レジストリ操作を監視するよう診断設定を構成することをお勧めします。

前提条件

  • Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の Bash のクイックスタート」を参照してください。

  • CLI リファレンス コマンドをローカルで実行する場合、Azure CLI をインストールします。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。

    • ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、Azure CLI でのサインインに関するページを参照してください。

    • 初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、Azure CLI で拡張機能を使用する方法に関するページを参照してください。

    • az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。

エクスポートを無効にするためのその他の要件

  • パブリック ネットワーク アクセスを無効にする - 成果物のエクスポートを無効にするには、レジストリへのパブリック アクセスも無効にする必要があります (レジストリの publicNetworkAccess プロパティを disabled に設定する必要があります)。 エクスポートを無効にする前に、またはそれを無効にするのと同時に、レジストリへのパブリック ネットワーク アクセスを無効にすることができます。

    レジストリのパブリック エンドポイントへのアクセスを無効にすることで、レジストリ操作が仮想ネットワーク内でのみ許可されるようになります。 成果物をプルしたり、他の操作を実行したりするためのレジストリへのパブリック アクセスは禁止されます。

  • エクスポート パイプラインを削除する - レジストリの exportPolicy の状態を disabled に設定する前に、レジストリに構成されている既存のエクスポート パイプラインを削除します。 パイプラインが構成されていると、exportPolicy の状態を変更できません。

既存のレジストリの exportPolicy を無効にする

レジストリを作成すると、exportPolicy の状態は既定で enabled に設定され、アーティファクトをエクスポートできるようになります。 ARM テンプレートまたは az resource update コマンドを使用して、状態を disabled に更新できます。

ARM テンプレート

exportPolicy の状態を更新し、publicNetworkAccess プロパティを disabled に設定するには、次の JSON を追加します。 詳細については、ARM テンプレートでのリソースのデプロイに関する記事を参照してください。

{
[...]
"resources": [
    {
    "type": "Microsoft.ContainerRegistry/registries",
    "apiVersion": "2021-06-01-preview",
    "name": "myregistry",
    [...]
    "properties": {
      "publicNetworkAccess": "disabled",
      "policies": {
        "exportPolicy": {
          "status": "disabled"
         }
      }
      }
    }
]
[...]
}

Azure CLI

既存のレジストリで exportPolicy の状態を disabled に設定するには、az resource update を実行します。 レジストリとリソース グループの名前を置き換えてください。

この例で示すように、exportPolicy プロパティを無効にするときは、publicNetworkAccess プロパティも disabled に設定します。

az resource update --resource-group myResourceGroup \
    --name myregistry \
    --resource-type "Microsoft.ContainerRegistry/registries" \
    --api-version "2021-06-01-preview" \
    --set "properties.policies.exportPolicy.status=disabled" \
    --set "properties.publicNetworkAccess=disabled"  

出力では、エクスポート ポリシーの状態が無効であることが示されています。

{
  "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx/resourceGroups/myResourceGroup/providers/Microsoft.ContainerRegistry/registries/myregistry",
  "identity": null,
  "kind": null,
  "location": "centralus",
  "managedBy": null,
  "name": "myregistry",
  "plan": null,
  "properties": {
    [...]
    "policies": {
      "exportPolicy": {
        "status": "disabled"
      },
      "quarantinePolicy": {
        "status": "disabled"
      },
      "retentionPolicy": {
        "days": 7,
        "lastUpdatedTime": "2021-07-20T23:20:30.9985256+00:00",
        "status": "disabled"
      },
      "trustPolicy": {
        "status": "disabled",
        "type": "Notary"
      },
    "privateEndpointConnections": [],
    "provisioningState": "Succeeded",
    "publicNetworkAccess": "Disabled",
    "zoneRedundancy": "Disabled"
[...]
}

exportPolicy を有効にする

レジストリで exportPolicy の状態を無効にした後は、ARM テンプレートまたは az resource update コマンドを使用して、いつでも再び有効にすることができます。

ARM テンプレート

exportPolicy の状態を enabled に更新するには、次の JSON を追加します。 詳細については、ARM テンプレートでのリソースのデプロイに関する記事を参照してください

{
[...]
"resources": [
    {
    "type": "Microsoft.ContainerRegistry/registries",
    "apiVersion": "2021-06-01-preview",
    "name": "myregistry",
    [...]
    "properties": {
     "policies": {
        "exportPolicy": {
          "status": "enabled"
         }
      }
      }
    }
]
[...]
}

Azure CLI

exportPolicy の状態を enabled に設定するには、az resource update を実行します。 レジストリとリソース グループの名前を置き換えてください。

az resource update --resource-group myResourceGroup \
    --name myregistry \
    --resource-type "Microsoft.ContainerRegistry/registries" \
    --api-version "2021-06-01-preview" \
    --set "properties.policies.exportPolicy.status=enabled"

次のステップ