[アーティクル] 05/10/2024
4 人の共同作成者
フィードバック
この記事の内容
Azure Blob Storage に不変ストレージを使うと、ユーザーはビジネスに不可欠なデータを WORM (Write Once, Read Many) 状態で格納できます。 WORM 状態の場合、ユーザーが指定した間隔でデータを変更または削除することはできません。 BLOB データに不変ポリシーを構成することにより、上書きや削除からデータを保護することができます。 不変性ポリシーには、時間ベースの保持ポリシーと訴訟ホールドが含まれています。 Blob Storage の不変ポリシーの詳細については、「不変ストレージを使用してビジネスに不可欠な BLOB データを保存する 」を参照してください。
不変性ポリシーは、個々の BLOB バージョンまたはコンテナーのいずれかにスコープ設定できます。 この記事では、コンテナーレベルの不変性ポリシーを構成する方法について説明します。 バージョンレベルの不変性ポリシーを構成する方法については、「BLOB バージョンに対する不変性ポリシーを構成する 」を参照してください。
注意
不変性ポリシーは、Network File System (NFS) 3.0 プロトコルまたは SSH ファイル転送プロトコル (SFTP) が有効になっているアカウントではサポートされません。
コンテナーの時間ベースの保持ポリシーを構成するには、Azure portal、PowerShell、または Azure CLI を使用します。 コンテナー レベルの保持ポリシーは、1 - 146,000 日の範囲で構成できます。
Azure portal を使用して時間ベースの保持ポリシーをコンテナーに対して構成するには、次の手順に従います。
目的のコンテナーに移動します。
右側の [その他] ボタンを選択し、 [アクセス ポリシー] を選択します。
[Immutable blob storage](不変 BLOB ストレージ) セクションで、 [ポリシーの追加] を選択します。
[ポリシーの種類] フィールドで、 [Time-based retention](時間ベースの保持) を選択し、保持期間を日単位で指定します。
コンテナー スコープでポリシーを作成するには、[バージョンレベルの不変性を有効にする] チェック ボックスをオフにします。
保護された追加書き込みを許可するかどうかを選択します。
[Append blobs] (追加 BLOB) オプションを使用すると、ワークロードが Append Block 操作を使用して、追加 BLOB の末尾に新しいデータ ブロックを追加できます。
[ブロック BLOB と追加 BLOB] オプションでは、[Append blobs] (追加 BLOB) オプションと同じアクセス許可に加え、ブロック BLOB に新しいブロックを書き込む権限が追加されます。 これをアプリケーションから直接実行する方法は、Blob Storage API には用意されていません。 ただし、アプリケーションでは、Data Lake Storage Gen2 API にある append メソッドと flush メソッドを使用してこれを実現できます。 また、一部の Microsoft アプリケーションでは、ブロック BLOB を作成してそこに追加する内部 API が使用されます。 ワークロードがこれらのツールのいずれかに依存している場合、これらのツールがブロック BLOB にブロックを追加しようとしたときに発生する可能性のあるエラーを、このプロパティを使用して回避できます。
これらのオプションの詳細については、「保護された追加 BLOB の書き込みを許可する 」を参照してください。
不変性ポリシーを構成したら、それがコンテナーにスコープ設定されていることを確認します。
PowerShell を使用して時間ベースの保持ポリシーをコンテナーに対して構成するには、Set-AzRmStorageContainerImmutabilityPolicy コマンドを呼び出して、保持間隔を日単位で指定します。 山かっこ内のプレースホルダーをお客様独自の値に置き換えてください。
Set-AzRmStorageContainerImmutabilityPolicy -ResourceGroupName <resource-group> `
-StorageAccountName <storage-account> `
-ContainerName <container> `
-ImmutabilityPeriod 10
保護された追加書き込みを許可するには、-AllowProtectedAppendWrite
または -AllowProtectedAppendWriteAll
パラメーターを true
に設定します。
AllowProtectedAppendWrite オプションを使用すると、ワークロードが Append Block 操作を使用して、追加 BLOB の末尾に新しいデータ ブロックを追加できます。
AllowProtectedAppendWriteAll オプションでは、AllowProtectedAppendWrite オプションと同じアクセス許可に加え、ブロック BLOB に新しいブロックを書き込む権限が追加されます。 これをアプリケーションから直接実行する方法は、Blob Storage API には用意されていません。 ただし、アプリケーションでは、Data Lake Storage Gen2 API にある append メソッドと flush メソッドを使用してこれを実現できます。 また、一部の Microsoft アプリケーションでは、ブロック BLOB を作成してそこに追加する内部 API が使用されます。 ワークロードがこれらのツールのいずれかに依存している場合、これらのツールがブロック BLOB にブロックを追加しようとしたときに発生する可能性のあるエラーを、このプロパティを使用して回避できます。
これらのオプションの詳細については、「保護された追加 BLOB の書き込みを許可する 」を参照してください。
Azure CLI を使用して時間ベースの保持ポリシーをコンテナーに対して構成するには、az storage container immutability-policy create コマンドを呼び出して、保持間隔を日単位で指定します。 山かっこ内のプレースホルダーをお客様独自の値に置き換えてください。
az storage container immutability-policy create \
--resource-group <resource-group> \
--account-name <storage-account> \
--container-name <container> \
--period 10
保護された追加書き込みを許可するには、--allow-protected-append-writes
または --allow-protected-append-writes-all
パラメーターを true
に設定します。
--allow-protected-append-writes オプションを使用すると、ワークロードが Append Block 操作を使用して、追加 BLOB の末尾に新しいデータ ブロックを追加できます。
--allow-protected-append-writes-all オプションでは、--allow-protected-append-writes オプションと同じアクセス許可に加え、ブロック BLOB に新しいブロックを書き込む権限が追加されます。 これをアプリケーションから直接実行する方法は、Blob Storage API には用意されていません。 ただし、アプリケーションでは、Data Lake Storage Gen2 API にある append メソッドと flush メソッドを使用してこれを実現できます。 また、一部の Microsoft アプリケーションでは、ブロック BLOB を作成してそこに追加する内部 API が使用されます。 ワークロードがこれらのツールのいずれかに依存している場合、これらのツールがブロック BLOB にブロックを追加しようとしたときに発生する可能性のあるエラーを、このプロパティを使用して回避できます。
これらのオプションの詳細については、「保護された追加 BLOB の書き込みを許可する 」を参照してください。
ロック解除された保持ポリシーを変更する
ロック解除された時間ベースの保持ポリシーを変更して、保持間隔を短縮または延長し、コンテナー内の追加 BLOB への追加の書き込みを許可することができます。 また、ロック解除されたポリシーを削除することもできます。
ロック解除された時間ベースの保持ポリシーを Azure portal で変更するには、次の手順に従います。
目的のコンテナーに移動します。
[その他] ボタンを選択し、 [アクセス ポリシー] を選択します。
[Immutable blob versions](不変 BLOB バージョン) セクションで、既存のロック解除されたポリシーを見つけます。 [その他] ボタンを選択し、メニューから [編集] を選択します。
ポリシーの新しい保持間隔を指定します。 [Allow additional protected appends](保護された追加をさらに許可する) を選択して、保護された追加 BLOB への書き込みを許可することもできます。
ロック解除されたポリシーを削除するには、 [詳細] ボタン、 [削除] の順に選択します。
Note
[バージョン レベルの不変性を有効にする] チェック ボックスをオンにすると、バージョンレベルの不変性ポリシーを有効化できます。 バージョンレベルの不変性ポリシーの有効化について、詳しくは「BLOB バージョンに対する不変性ポリシーを構成する 」を参照してください。
ロック解除されたポリシーを変更するには、まず、Get-AzRmStorageContainerImmutabilityPolicy コマンドを呼び出してポリシーを取得します。 次に、Set-AzRmStorageContainerImmutabilityPolicy コマンドを呼び出してポリシーを更新します。 日単位の新しい保持間隔と -ExtendPolicy
パラメーターを含めます。 山かっこ内のプレースホルダーをお客様独自の値に置き換えてください。
$policy = Get-AzRmStorageContainerImmutabilityPolicy -ResourceGroupName <resource-group> `
-AccountName <storage-account> `
-ContainerName <container>
Set-AzRmStorageContainerImmutabilityPolicy -ResourceGroupName <resource-group> `
-StorageAccountName <storage-account> `
-ContainerName <container> `
-ImmutabilityPeriod 21 `
-AllowProtectedAppendWriteAll true `
-Etag $policy.Etag `
-ExtendPolicy
ロック解除されたポリシーを削除するには、Remove-AzRmStorageContainerImmutabilityPolicy コマンドを呼び出します。
Remove-AzRmStorageContainerImmutabilityPolicy -ResourceGroupName <resource-group> `
-AccountName <storage-account> `
-ContainerName <container>
-Etag $policy.Etag
Azure CLI を使用して、ロック解除された時間ベースの保持ポリシーを変更するには、az storage container immutability-policy extend コマンドを呼び出して、新しい保持間隔を日単位で指定します。 山かっこ内のプレースホルダーをお客様独自の値に置き換えてください。
$etag=$(az storage container immutability-policy show \
--account-name <storage-account> \
--container-name <container> \
--query etag \
--output tsv)
az storage container immutability-policy extend \
--resource-group <resource-group> \
--account-name <storage-account> \
--container-name <container> \
--period 21 \
--if-match $etag \
--allow-protected-append-writes-all true
ロック解除されたポリシーを削除するには、az storage container immutability-policy delete コマンドを呼び出します。
時間ベースの保持ポリシーをロックする
時間ベースの保持ポリシーのテストが完了したら、そのポリシーをロックできます。 ロックされたポリシーは、SEC 17a-4(f) および他の規制コンプライアンスに準拠しています。 ロックされたポリシーの保持間隔は最大 5 倍まで延長できますが、短縮することはできません。
ポリシーはロックされると、削除できません。 ただし、保持間隔の有効期限が切れた後は BLOB を削除できます。
Azure portal でポリシーをロックするには、次の手順を実行します。
ロック解除されたポリシーがあるコンテナーにアクセスします。
[Immutable blob versions](不変 BLOB バージョン) セクションで、既存のロック解除されたポリシーを見つけます。 [詳細] ボタンを選択し、メニューから [ポリシーのロック] を選択します。
ポリシーをロックすることを確認します。
PowerShell を使用してポリシーをロックするには、まず、Get-AzRmStorageContainerImmutabilityPolicy コマンドを呼び出してポリシーの ETag を取得します。 次に、Lock-AzRmStorageContainerImmutabilityPolicy コマンドを呼び出して ETag の値を渡すことで、ポリシーをロックします。 山かっこ内のプレースホルダーをお客様独自の値に置き換えてください。
$policy = Get-AzRmStorageContainerImmutabilityPolicy -ResourceGroupName <resource-group> `
-AccountName <storage-account> `
-ContainerName <container>
Lock-AzRmStorageContainerImmutabilityPolicy -ResourceGroupName <resource-group> `
-AccountName <storage-account> `
-ContainerName <container> `
-Etag $policy.Etag
Azure CLI を使用してポリシーをロックするには、まず、az storage container immutability-policy show コマンドを呼び出してポリシーの ETag を取得します。 次に、az storage container immutability-policy lock コマンドを呼び出して ETag の値を渡すことで、ポリシーをロックします。 山かっこ内のプレースホルダーをお客様独自の値に置き換えてください。
$etag=$(az storage container immutability-policy show \
--account-name <storage-account> \
--container-name <container> \
--query etag \
--output tsv)
az storage container immutability-policy lock \
--resource-group <resource-group> \
--account-name <storage-account> \
--container-name <container> \
--if-match $etag
訴訟ホールドは、訴訟ホールドが明示的にクリアされるまで、不変データを格納します。 訴訟ホールド ポリシーの詳細については、「不変 BLOB データの訴訟ホールド 」を参照してください。
Azure portal を使用してコンテナーの訴訟ホールドを構成するには、次の手順に従います。
目的のコンテナーに移動します。
[その他] ボタンを選択し、 [アクセス ポリシー] を選択します。
[Immutable blob versions](不変 BLOB バージョン) セクションで、 [ポリシーの追加] を選択します。
ポリシーの種類として [訴訟ホールド] を選択します。
1 つ以上の訴訟ホールド タグを追加します。
保護された追加書き込みを許可するかどうかを選択し、[保存] を選択します。
[Append blobs] (追加 BLOB) オプションを使用すると、ワークロードが Append Block 操作を使用して、追加 BLOB の末尾に新しいデータ ブロックを追加できます。
この設定により、ブロック BLOB に新しいブロックを書き込む権限も追加されます。 これをアプリケーションから直接実行する方法は、Blob Storage API には用意されていません。 ただし、アプリケーションでは、Data Lake Storage Gen2 API にある append メソッドと flush メソッドを使用してこれを実現できます。 また、このプロパティを使用すると、Azure Data Factory などの Microsoft アプリケーションが内部 API を使用してデータ ブロックを追加できます。 ワークロードがこれらのツールのいずれかに依存している場合、これらのツールが BLOB にデータを追加しようとしたときに発生する可能性のあるエラーを、このプロパティを使用して回避できます。
これらのオプションの詳細については、「保護された追加 BLOB の書き込みを許可する 」を参照してください。
不変性ポリシーを構成したら、それがコンテナーにスコープ設定されていることを確認します。
次の図は、時間ベースの保持ポリシーと訴訟ホールドの両方が構成されたコンテナーを示しています。
訴訟ホールドをクリアするには、[アクセス ポリシー] ダイアログに移動し、ポリシーのコンテキスト メニューで [編集] を選択します。 次に、ポリシーのすべてのタグを削除してホールドを解除します。
PowerShell を使用してコンテナーの訴訟ホールドを構成するには、Add-AzRmStorageContainerLegalHold コマンドを呼び出します。 山かっこ内のプレースホルダーをお客様独自の値に置き換えてください。
Add-AzRmStorageContainerLegalHold -ResourceGroupName <resource-group> `
-StorageAccountName <storage-account> `
-Name <container> `
-Tag <tag1>,<tag2>,...`
-AllowProtectedAppendWriteAll true
訴訟ホールドを解除するには、Remove-AzRmStorageContainerLegalHold コマンドを呼び出します。
Remove-AzRmStorageContainerLegalHold -ResourceGroupName <resource-group> `
-StorageAccountName <storage-account> `
-Name <container> `
-Tag <tag1>,<tag2>,...
PowerShell を使用してコンテナーの訴訟ホールドを構成するには、az storage container legal-hold set コマンドを呼び出します。 山かっこ内のプレースホルダーをお客様独自の値に置き換えてください。
az storage container legal-hold set \
--tags tag1 tag2 \
--container-name <container> \
--account-name <storage-account> \
--resource-group <resource-group> \
--allow-protected-append-writes-all true
訴訟ホールドをクリアするには、az storage container legal-hold clear コマンドを呼び出します。
az storage container legal-hold clear \
--tags tag1 tag2 \
--container-name <container> \
--account-name <storage-account> \
--resource-group <resource-group> \
次のステップ