BLOB バージョンに対する不変性ポリシーを構成する

Azure Blob Storage の不変ストレージを使用すると、ユーザーはビジネスに不可欠なデータを WORM (Write Once, Read Many) 状態で保存できます。 WORM 状態の場合、ユーザーが指定した間隔でデータを変更または削除することはできません。 BLOB データに不変ポリシーを構成することにより、上書きや削除からデータを保護することができます。 不変性ポリシーには、時間ベースの保持ポリシーと訴訟ホールドが含まれています。 Blob Storage の不変ポリシーの詳細については、「不変ストレージを使用してビジネスに不可欠な BLOB データを保存する」を参照してください。

不変性ポリシーは、個々の BLOB バージョンまたはコンテナーのいずれかにスコープ設定できます。 この記事では、バージョン レベルの不変ポリシーを構成する方法について説明します。 コンテナー レベルの不変ポリシーを構成する方法については、「コンテナーの不変ポリシーを構成する」を参照してください。

注意

不変性ポリシーは、Network File System (NFS) 3.0 プロトコルまたは SSH ファイル転送プロトコル (SFTP) が有効になっているアカウントではサポートされません。

バージョン レベルの不変ポリシーの構成は、2 段階のプロセスです。

  1. 最初に、新規のストレージ アカウントか新規または既存のコンテナーでバージョン レベルの不変性のサポートを有効にします。 詳細については、コンテナーでバージョン レベルの不変性のサポートを有効化に関するページを参照してください。
  2. 次に、そのコンテナー内の 1 つ以上の BLOB バージョンに適用される時間ベースの保持ポリシーまたは訴訟ホールドを構成します。

前提条件

バージョン レベルの時間ベースの保持ポリシーを構成するには、そのストレージ アカウントに対して BLOB のバージョン管理を有効にする必要があります。 BLOB バージョン管理を有効にすると、課金に影響する場合があることに注意してください。 BLOB のバージョン管理を有効にする方法については、「BLOB のバージョン管理を有効にして管理する」をご覧ください。

バージョン レベルの不変ポリシーでサポートされているストレージ アカウントの構成については、不変 BLOB データのバージョン レベルの WORM ポリシーに関するページを参照してください。

バージョン レベルの不変性のサポートを有効にする

時間ベースの保持ポリシーを BLOB バージョンに適用するには、事前にバージョン レベルの不変性のサポートを有効にする必要があります。 新しいストレージ アカウントか新規または既存のコンテナーで、バージョン レベルの変更可能性のサポートを有効にできます。

ストレージ アカウントでバージョン レベルの変更可能性のサポートを有効にする

新しいストレージ アカウントを作成するときにのみ、バージョン レベルの変更可能性のサポートを有効にできます。

Azure Portal でストレージ アカウントを作成するときにバージョン レベルの変更可能性のサポートを有効にするには、次の手順に従います。

  1. Azure portal で、[ストレージ アカウント] ページに移動します。

  2. [作成] ボタンを選択して、新しいアカウントを作成します。

  3. [基本] タブに入力します。

  4. [データ保護] タブの [アクセス制御] で、[バージョン レベルの変更可能性のサポートを有効にする] を選択します。 このチェック ボックスをオンにすると、[BLOB のバージョン管理を有効にする] チェックボックスも自動的にオンになります。

  5. [確認および作成] を選択して、アカウント パラメーターを確認し、ストレージ アカウントを作成します。

    バージョン レベルの不変性をサポートするストレージ アカウントを作成する方法を示すスクリーンショット

ストレージ アカウントを作成したら、アカウントの既定のバージョン レベル ポリシーを構成できます。 詳細については、既定の時間ベースの保持ポリシーの構成に関するページを参照してください。

ストレージ アカウントでバージョン レベルの不変性のサポートが有効で、アカウントに 1 つ以上のコンテナーが含まれている場合は、アカウントまたはコンテナーに対して有効な不変性ポリシーがない場合でも、ストレージ アカウントを削除する前に、すべてのコンテナーを削除する必要があります。

注意

バージョンレベルの不変性は、有効にした後は無効にできません。ただし、ロックされたポリシーは削除できます。

コンテナーでバージョン レベルの変更可能性のサポートを有効にする

バージョン レベルの不変性をサポートするように、新規と既存の両方のコンテナーを構成できます。 ただし、既存のコンテナーでは、サポートを有効にするために、移行プロセスを実行する必要があります。

コンテナーに対してバージョン レベルの不変性のサポートを有効にしても、そのコンテナー内のデータは不変にはならないことに注意してください。 また、コンテナーに対する既定の不変ポリシーまたは特定の BLOB バージョンに対する不変ポリシーのいずれかを構成する必要があります。 ストレージ アカウントの作成時にストレージ アカウントのバージョン レベルの変更可能性を有効にした場合は、アカウントの既定の変更可能性ポリシーを構成することもできます。

新しいコンテナーに対してバージョン レベルの不変性を有効にする

バージョン レベルの不変ポリシーを使用するには、まず、コンテナーに対してバージョン レベルの WORM のサポートを明示的に有効にする必要があります。 バージョン レベルの WORM のサポートは、コンテナーを作成するとき、または既存のコンテナーにバージョン レベルの不変ポリシーを追加するときに有効にできます。

Azure portal でバージョン レベルの不変性をサポートするコンテナーを作成するには、次の手順に従います。

  1. Azure portal でご自分のストレージ アカウントの [コンテナー] ページに移動し、 [追加] を選択します。

  2. [新しいコンテナー] ダイアログで、コンテナーの名前を指定し、 [詳細設定] セクションを展開します。

  3. [Enable version-level immutability support](バージョン レベルの不変性のサポートを有効にする) を選択して、そのコンテナーにに対してバージョン レベルの不変性を有効にします。

    バージョン レベルの不変性を有効にしてコンテナーを作成する方法を示すスクリーンショット

コンテナーでバージョン レベルの不変性のサポートが有効で、コンテナーに 1 つ以上の BLOB が含まれている場合は、アカウントまたはコンテナーまたは BLOB に対して有効な不変性ポリシーがない場合でも、コンテナーを削除する前に、すべての BLOB を削除する必要があります。

バージョン レベルの不変性をサポートするために既存のコンテナーを移行する

既存のコンテナーにバージョン レベルの不変ポリシーを構成するには、バージョン レベルの不変ストレージをサポートするためにそのコンテナーを移行する必要があります。 コンテナーの移行には時間がかかる場合があり、元に戻すことはできません。 ストレージ アカウントごとに一度に移行できるコンテナーは 10 個です。

バージョン レベルの不変性ポリシーをサポートするために既存のコンテナーを移行するには、そのコンテナーにコンテナーレベルの時間ベースの保持ポリシーが構成されている必要があります。 コンテナーに既存のポリシーがない場合、移行は失敗します。 コンテナーレベル ポリシーの保持間隔は、コンテナー上の既定のバージョンレベル ポリシーの保持間隔として維持されます。

コンテナーに既存のコンテナー レベルの訴訟ホールドがある場合は、訴訟ホールドが削除されるまで移行できません。

Azure portal でバージョン レベルの不変ポリシーをサポートするためにコンテナーを移行するには、次の手順に従います。

  1. 目的のコンテナーに移動します。

  2. コンテナーのコンテキスト メニューで、[アクセス ポリシー] を選択します。

  3. 次に、 [不変 BLOB ストレージ] の下で [ポリシーの追加] を選択します。

  4. [ポリシーの種類] フィールドで、 [時間ベースの保持] を選択し、保持間隔を指定します。

  5. [Enable version-level immutability](バージョン レベルの不変性を有効にする) を選択します。

  6. [OK] を選択すると、指定された保持間隔でコンテナー レベルのポリシーが作成され、バージョン レベルの不変性サポートへの移行が開始されます。

    バージョン レベルの不変性をサポートするための既存のコンテナーの移行方法を示すスクリーンショット

移行操作が進行中の間、コンテナーのポリシーのスコープは "コンテナー" と表示されます。 コンテナーの移行の進行中は、バージョン レベルの不変ポリシーの管理に関連する操作は許可されません。 BLOB データに対するその他の操作は、移行中に通常どおり続行されます。

進行中のコンテナーの移行を示すスクリーンショット

移行が完了すると、コンテナー上のポリシーのスコープは "バージョン" と表示されます。 表示されているポリシーは、コンテナーの既定のポリシーで、以降コンテナー内で作成されたすべての BLOB のバージョンに自動的に適用されます。 既定のポリシーは、そのバージョンのカスタム ポリシーを指定することで、任意のバージョンでオーバーライドできます。

完了したコンテナーの移行を示すスクリーンショット

既定の時間ベースの保持ポリシーを構成する

ストレージ アカウントまたは個々のコンテナーに対してバージョン レベルの変更可能性のサポートを有効にした後は、アカウントまたはコンテナーに既定のバージョン レベルの時間ベースの保持ポリシーを指定できます。 アカウントまたはコンテナーの既定のポリシーを指定すると、そのポリシーは、アカウントまたはコンテナーで作成された新しい BLOB バージョンに既定で適用されます。 アカウントまたはコンテナー内の個々の BLOB バージョンの既定のポリシーは、オーバーライドすることができます。

既定のポリシーが、既定のポリシーが構成される前に存在していた BLOB バージョンに自動的に適用されることはありません。

バージョン レベルの不変性をサポートするために既存のコンテナーを移行した場合、移行前に有効だったコンテナー レベルのポリシーは、コンテナーの既定のバージョン レベルのポリシーに移行されます。

ストレージ アカウントまたはコンテナーの既定のバージョン レベルの不変ポリシーを構成するには、Azure portal、PowerShell、Azure CLI、または Azure Storage SDK のいずれかを使用します。 「バージョン レベルの不変性のサポートを有効にする」の説明に従って、ストレージ アカウントまたはコンテナーのバージョン レベルの不変性のサポートを有効にするようにしてください。

Azure portal で既定のバージョン レベルの不変ポリシーをストレージ アカウントで構成するには、次の手順を実行します。

  1. Azure Portal のストレージ アカウントに移動します。

  2. [データ管理] で、[データ保護] を選択します。

  3. [データ保護] ページで、[アクセスの制御] オプションを探します。 ストレージ アカウントがバージョン レベルの変更可能性をサポートして作成された場合は、[アクセスの制御] セクションに [ポリシーの管理] ボタンが表示されます。

    ストレージ アカウントの既定のバージョン レベルの不変性ポリシーを管理する方法を示すスクリーンショット

  4. [ポリシーの管理] ボタンを選択して、[バージョン レベルの変更可能性ポリシーの管理] ダイアログを表示します。

  5. ストレージ アカウントの既定の時間ベースの保持ポリシーを追加します。

    ストレージ アカウントの既定のバージョン レベルの保持ポリシーを構成する方法を示すスクリーンショット

Azure portal で既定のバージョン レベルの不変ポリシーをコンテナーで構成するには、次の手順を実行します。

  1. Azure portal で、 [コンテナー] ページに移動し、ポリシーを適用するコンテナーを見つけます。

  2. コンテナーのコンテキスト メニューで、[アクセス ポリシー] を選びます。

  3. [アクセス ポリシー] ダイアログの [不変 BLOB ストレージ] セクションで、 [ポリシーの追加] を選択します。

  4. 時間ベースの保持ポリシーを選択し、保持間隔を指定します。

  5. 保護された追加書き込みを許可するかどうかを選択します。

    [Append blobs] (追加 BLOB) オプションを使用すると、ワークロードが Append Block 操作を使用して、追加 BLOB の末尾に新しいデータ ブロックを追加できます。

    [ブロック BLOB と追加 BLOB] オプションは、このサポートを拡張するもので、ブロック BLOB に新しいブロックを書き込む権限が追加されます。 これをアプリケーションから直接実行する方法は、Blob Storage API には用意されていません。 ただし、アプリケーションでは、Data Lake Storage Gen2 API にある append メソッドと flush メソッドを使用してこれを実現できます。 また、このプロパティを使用すると、Azure Data Factory などの Microsoft アプリケーションが内部 API を使用してデータ ブロックを追加できます。 ワークロードがこれらのツールのいずれかに依存している場合、これらのツールが BLOB にデータを追加しようとしたときに発生する可能性のあるエラーを、このプロパティを使用して回避できます。

    これらのオプションの詳細については、「保護された追加 BLOB の書き込みを許可する」を参照してください。

    コンテナーにスコープ設定されている不変性ポリシーの構成方法を示すスクリーンショット。

コンテナーに対する保持ポリシーのスコープを決定する

Azure portal で時間ベースの保持ポリシーのスコープを決定するには、次の手順を実行します。

  1. 目的のコンテナーに移動します。

  2. コンテナーのコンテキスト メニューで、[アクセス ポリシー] を選択します。

  3. [不変 BLOB ストレージ] の下で [スコープ] フィールドを見つけます。 コンテナーに既定のバージョン レベルの保持ポリシーが構成されている場合は、次の図に示すように、スコープが "バージョン" に設定されます。

    コンテナーに構成されている既定のバージョン レベルの保持ポリシーを示すスクリーンショット

  4. コンテナーにコンテナー レベルの保持ポリシーが構成されている場合は、次の図に示すように、スコープが "コンテナー" に設定されます。

    コンテナーに構成されているコンテナー レベルの保持ポリシーを示すスクリーンショット

既存のバージョンに時間ベースの保持ポリシーを構成する

時間ベースの保持ポリシーを使用すると、指定された期間 BLOB データが WORM 状態で保持されます。 時間ベースの保持ポリシーの詳細については、「不変 BLOB データに対する時間ベースの保持ポリシー」を参照してください。

BLOB バージョンに時間ベースの保持ポリシーを構成するには、次の 3 つのオプションがあります。

  • オプション 1: アカウントまたはコンテナー内のすべてのオブジェクトに適用されるストレージ アカウントまたはコンテナーの既定のポリシーを構成できます。 アカウントまたはコンテナー内のオブジェクトでは、個々の BLOB バージョンでポリシーを構成することによって明示的に既定のポリシーをオーバーライドしない限り、既定のポリシーが継承されます。 詳細については、既定の時間ベースの保持ポリシーの構成に関するページを参照してください。
  • オプション 2: 現在のバージョンの BLOB でポリシーを構成できます。 既定のポリシーが存在し、ロックが解除されている場合、このポリシーは、ストレージ アカウントまたはコンテナーに構成されている既定のポリシーをオーバーライドできます。 既定では、ポリシーの構成後に作成された以前のバージョンでは、BLOB の現在のバージョンのポリシーが継承されます。 詳細については、「現在のバージョンの BLOB で保持ポリシーを構成する」を参照してください。
  • オプション 3: 以前のバージョンの BLOB でポリシーを構成できます。 このポリシーは、現在のバージョンに構成されている既定のポリシー (存在していてロック解除されている場合) をオーバーライドできます。 詳細については、「以前のバージョンの BLOB で保持ポリシーを構成する」を参照してください。

BLOB のバージョン管理の詳細については、「BLOB のバージョン管理」を参照してください。

Azure portal でコンテナーに移動すると、BLOB の一覧が表示されます。 表示される各 BLOB は、BLOB の現在のバージョンを表します。 BLOB のコンテキスト メニューを開き、[以前のバージョンの表示] を選択すると、以前のバージョンの一覧にアクセスできます。

現在のバージョンの BLOB で保持ポリシーを構成する

現在のバージョンの BLOB に時間ベースの保持ポリシーを構成するには、次の手順を実行します。

  1. ターゲット BLOB が含まれているコンテナーに移動します。

  2. BLOB のコンテキスト メニューで、[アクセス ポリシー] を選択します。 以前のバージョンに対して時間ベースの保持ポリシーが既に構成されている場合は、それが [アクセス ポリシー] ダイアログに表示されます。

  3. [アクセス ポリシー] ダイアログの [Immutable blob versions](不変 BLOB バージョン) セクションで、 [ポリシーの追加] を選択します。

  4. 時間ベースの保持ポリシーを選択し、保持間隔を指定します。

  5. [OK] を選択して、このポリシーを現在のバージョンの BLOB に適用します。

    現在のバージョンの BLOB に保持ポリシーを構成する方法を示すスクリーンショット

BLOB のプロパティを表示して、現在のバージョンでポリシーが有効になっているかどうかを確認できます。 BLOB を選択し、 [概要] タブに移動して、 [Version-level immutability policy](バージョン レベルの不変ポリシー) プロパティを見つけます。 ポリシーが有効になっている場合は、 [保持期間] プロパティにポリシーの有効期限の日時が表示されます。 ポリシーは、現在のバージョンに対して構成されるか、既定のポリシーが有効な場合は BLOB の親コンテナーから継承される場合があることに注意してください。

Azure portal で BLOB バージョンの不変ポリシープロパティを示すスクリーンショット

以前のバージョンの BLOB で保持ポリシーを構成する

以前のバージョンの BLOB で時間ベースの保持ポリシーを構成することもできます。 以前のバージョンは、変更できないという点で常に不変です。 ただし、以前のバージョンは削除できます。 時間ベースの保持ポリシーが有効な間は、削除から保護されます。

以前のバージョンの BLOB に時間ベースの保持ポリシーを構成するには、次の手順を実行します。

  1. ターゲット BLOB が含まれているコンテナーに移動します。

  2. BLOB を選択し、 [バージョン] タブに移動します。

  3. ターゲット バージョンを見つけ、バージョンのコンテキスト メニューで [アクセス ポリシー] を選択します。 以前のバージョンに対して時間ベースの保持ポリシーが既に構成されている場合は、それが [アクセス ポリシー] ダイアログに表示されます。

  4. [アクセス ポリシー] ダイアログの [Immutable blob versions](不変 BLOB バージョン) セクションで、 [ポリシーの追加] を選択します。

  5. 時間ベースの保持ポリシーを選択し、保持間隔を指定します。

  6. [OK] を選択して、このポリシーを現在のバージョンの BLOB に適用します。

    Azure portal で以前の BLOB バージョンの保持ポリシーを構成する方法を示すスクリーンショット

BLOB のアップロード時に時間ベースの保持ポリシーを構成する

Azure portal を使用して、バージョン レベルの不変性をサポートするコンテナーに BLOB をアップロードするときに、新しい BLOB に時間ベースの保持ポリシーを構成するためのオプションがいくつかあります。

  • オプション 1: コンテナーに既定の保持ポリシーが構成されている場合は、そのコンテナーのポリシーを使用して BLOB をアップロードできます。 このオプションは、コンテナーに保持ポリシーがある場合に既定で選択されます。
  • オプション 2: コンテナーに既定の保持ポリシーが構成されている場合は、新しい BLOB にカスタム保持ポリシーを定義するか、ポリシーを使用せずに BLOB をアップロードすることで、既定のポリシーをオーバーライドできます。
  • オプション 3: コンテナーに既定のポリシーが構成されていない場合は、カスタム ポリシーを使用するか、ポリシーを使用せずに BLOB をアップロードできます。

BLOB をアップロードするときに時間ベースの保持ポリシーを構成するには、次の手順に従います。

  1. 目的のコンテナーに移動し、 [アップロード] を選択します。

  2. [BLOB のアップロード] ダイアログで [詳細設定] セクションを展開します。

  3. [保持ポリシー] フィールドで、新しい BLOB に時間ベースの保持ポリシーを構成します。 コンテナーに既定のポリシーが構成されている場合、そのポリシーが既定で選択されます。 BLOB にカスタム ポリシーを指定することもできます。

    Azure portal で BLOB のアップロード時に保持ポリシーを構成するためのオプションを示すスクリーンショット

ロック解除された保持ポリシーを削除または変更する

ロック解除された時間ベースの保持ポリシーを変更して、保持間隔を短縮または延長できます。 また、ロック解除されたポリシーを削除することもできます。 ある BLOB バージョンに対するロック解除された時間ベースの保持ポリシーを編集または削除しても、他のバージョンに対して有効なポリシーには影響しません。 コンテナーに対して有効な既定の時間ベースの保持ポリシーがある場合、変更または削除されたポリシーを持つ BLOB バージョンはそのコンテナーから継承されなくなります。

ロック解除された時間ベースの保持ポリシーを Azure portal で変更するには、次の手順に従います。

  1. ターゲット コンテナーまたはバージョンを見つけます。 コンテナーまたはバージョンのコンテキスト メニューで、[アクセス ポリシー] を選択します。

  2. 既存のロック解除された不変ポリシーを見つけます。 コンテキスト メニューで、メニューから [編集] を選択します。

    Azure portal で既存のバージョン レベルの時間ベースの保持ポリシーを編集する方法を示すスクリーンショット

  3. ポリシーの有効期限の新しい日時を指定します。

ロック解除されたポリシーを削除するには、コンテキスト メニューの [削除] を選択します。

時間ベースの保持ポリシーをロックする

時間ベースの保持ポリシーのテストが完了したら、そのポリシーをロックできます。 ロックされたポリシーは、SEC 17a-4(f) および他の規制コンプライアンスに準拠しています。 ロックされたポリシーの保持間隔は最大 5 倍まで延長できますが、短縮することはできません。

ポリシーはロックされると、削除できません。 ただし、保持間隔の有効期限が切れた後は BLOB を削除できます。

Azure portal でポリシーをロックするには、次の手順を実行します。

  1. ターゲット コンテナーまたはバージョンを見つけます。 コンテナーまたはバージョンのコンテキスト メニューで、[アクセス ポリシー] を選択します。

  2. [Immutable blob versions](不変 BLOB バージョン) セクションで、既存のロック解除されたポリシーを見つけます。 コンテキスト メニューの [ポリシーのロック] を選択します。

  3. ポリシーをロックすることを確認します。

    Azure portal で時間ベースの保持ポリシーをロックする方法を示すスクリーンショット

訴訟ホールドは、訴訟ホールドが明示的にクリアされるまで、不変データを格納します。 訴訟ホールド ポリシーの詳細については、「不変 BLOB データの訴訟ホールド」を参照してください。

BLOB のバージョンに対して訴訟ホールドを構成するには、まず、ストレージ アカウントまたはコンテナーでバージョンレベルの不変性のサポートを有効にする必要があります。 詳細については、「バージョンレベルの不変性のサポートを有効にする」を参照してください。

Azure portal を使用して BLOB バージョンの訴訟ホールドを構成するには、次の手順に従います。

  1. ターゲット バージョンを見つけます。これは、現在のバージョンまたは BLOB の以前のバージョンである可能性があります。 ターゲット バージョンのコンテキスト メニューで、[アクセス ポリシー] を選択します。

  2. [Immutable blob versions](不変 BLOB バージョン) セクションで、 [ポリシーの追加] を選択します。

  3. ポリシーの種類として [訴訟ホールド] を選択して、 [OK] を選択します。

次の図は、時間ベースの保持ポリシーと訴訟ホールドの両方が構成された BLOB の現在のバージョンを示しています。

BLOB バージョンに構成された訴訟ホールドを示すスクリーンショット

訴訟ホールドをクリアするには、[アクセス ポリシー] ダイアログに移動し、コンテキスト メニューの [削除] を選択します。

次のステップ