次の方法で共有


Azure PowerShell を使用してストレージ アカウント内のすべての Azure BLOB をバックアップする

この記事では、Azure PowerShell を使用して、ストレージ アカウント内のすべての Azure BLOB をバックアップする方法について説明します。 Azure Backup を使用して、運用バックアップとコンテナー化されたバックアップを実行して、ストレージ アカウント内のブロック BLOB を保護できるようになりました。 REST API を使用してバックアップを構成することもできます

Azure BLOB の使用可能なリージョン、サポートされるシナリオ、制限事項については、サポート マトリックスに関するページをご覧ください。

重要

Azure BLOB のサポートは、Az 5.9.0 バージョンから利用できます。

開始する前に

始める前に前提条件サポート マトリックスに関する記事を参照してください。

バックアップ コンテナーの作成

Backup ボールトは、Azure Database for PostgreSQL サーバーや Azure BLOB など、Azure Backup によってサポートされるさまざまな新しいワークロードのバックアップ データを保持する Azure 内のストレージ エンティティです。 バックアップ コンテナーを使用すると、管理オーバーヘッドを最小限に抑えながら、バックアップ データを簡単に整理できます。 バックアップ コンテナーは、Azure の Azure Resource Manager モデルに基づいており、強化されたバックアップ データの保護機能を提供します。

バックアップ コンテナーを作成する前に、コンテナー内のデータのストレージ冗長を選択します。 次に、そのストレージ冗長と場所を使用したバックアップ コンテナーの作成に進みます。 この記事では、リソース グループ testBkpVaultRGwestus リージョンに、バックアップ コンテナー TestBkpVault を作成します。 New-AzDataProtectionBackupVault コマンドを使用してバックアップ コンテナーを作成します。 詳細については、「バックアップ コンテナーの作成」を参照してください。

$storageSetting = New-AzDataProtectionBackupVaultStorageSettingObject -Type LocallyRedundant/GeoRedundant -DataStoreType VaultStore

New-AzDataProtectionBackupVault -ResourceGroupName testBkpVaultRG -VaultName TestBkpVault -Location westus -StorageSetting $storageSetting
$TestBkpVault = Get-AzDataProtectionBackupVault -VaultName TestBkpVault
$TestBKPVault | fl
ETag                :
Id                  : /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/TestBkpVault
Identity            : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.DppIdentityDetails
IdentityPrincipalId :
IdentityTenantId    :
IdentityType        :
Location            : westus
Name                : TestBkpVault
ProvisioningState   : Succeeded
StorageSetting      : {Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.StorageSetting}
SystemData          : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.SystemData
Tag                 : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.DppTrackedResourceTags
Type                : Microsoft.DataProtection/backupVaults

コンテナーを作成したら、Azure BLOB を保護するためのバックアップ ポリシーを作成しましょう。

重要

コンテナーのバックアップ ストレージの冗長性が表示されますが、冗長性は BLOB の運用バックアップには適用されません。このバックアップはローカルなものであり、バックアップ コンテナーにデータは格納されないためです。 ここでのバックアップ コンテナーは、ストレージ アカウント内のブロック BLOB の保護を管理するために役立つ管理エンティティです。

バックアップ ポリシーの作成

バックアップ レベルの選択:

重要

ポリシーの作成と Azure BLOB のバックアップの構成に進む前に、こちらのセクションをお読みください。

Azure BLOB バックアップのバックアップ ポリシーの内部構成要素を理解するには、Get-AzDataProtectionPolicyTemplate コマンドを使用してポリシー テンプレートを取得します。 このコマンドにより、指定されたデータソースの種類の既定のポリシー テンプレートが返されます。 このポリシー テンプレートを使用して、新しいポリシーを作成します。

$policyDefn = Get-AzDataProtectionPolicyTemplate -DatasourceType AzureBlob
$policyDefn | fl


DatasourceType : {Microsoft.Storage/storageAccounts/blobServices}
ObjectType     : BackupPolicy
PolicyRule     : {Default}

$policyDefn.PolicyRule | fl

IsDefault  : True
Lifecycle  : {Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202101.SourceLifeCycle}
Name       : Default
ObjectType : AzureRetentionRule

このポリシー テンプレートは、ライフサイクル (バックアップをいつ削除、コピー、移動するかを決定) のみで構成されます。 BLOB の運用バックアップは継続的に行われるため、バックアップを実行するスケジュールは必要ありません。

$policyDefn.PolicyRule.Lifecycle | fl


DeleteAfterDuration        : P30D
DeleteAfterObjectType      : AbsoluteDeleteOption
SourceDataStoreObjectType  : DataStoreInfoBase
SourceDataStoreType        : OperationalStore
TargetDataStoreCopySetting :

Note

長期間を対象にした復元の場合、復元操作の完了に時間がかかることがあります。 また、一連のデータの復元にかかる時間は、復元期間中に行われた書き込み操作と削除操作の数に基づきます。 たとえば、100 万オブジェクトを持つアカウントで毎日 3,000 オブジェクトが追加され、毎日 1,000 オブジェクトが削除される場合、過去 30 日間のポイントまで復元するのに約 2 時間必要になります。

この変更率のアカウントでは、過去 90 日以上の保有期間と復元は推奨されません。

ポリシー オブジェクトに目的の値をすべて設定したら、New-AzDataProtectionBackupPolicy コマンドを使用したポリシー オブジェクトからの新しいポリシーの作成に進みます。

New-AzDataProtectionBackupPolicy -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -Name blobBkpPolicy -Policy $policyDefn

Name                   Type
----                   ----
blobBkpPolicy       Microsoft.DataProtection/backupVaults/backupPolicies

$blobBkpPol = Get-AzDataProtectionBackupPolicy -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -Name "blobBkpPolicy"

バックアップの構成

コンテナーとポリシーを作成したら、ストレージ アカウント内のすべての Azure BLOB を保護するためにユーザーが考慮しなければならない重要なポイントが 2 つあります。

  • 主なエンティティ
  • アクセス許可

主なエンティティ

  • 保護する BLOB を含むストレージ アカウント: 保護する BLOB を含むストレージ アカウントの Azure Resource Manager ID をフェッチします。 これは、ストレージ アカウントの識別子として機能します。 ここでは、別のサブスクリプションのリソース グループ blobrg の下にある、PSTestSA という名前のストレージ アカウントを例に説明します。

    $SAId = "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/blobrg/providers/Microsoft.Storage/storageAccounts/PSTestSA"
    
  • バックアップ コンテナー: バックアップ コンテナーからストレージ アカウント内に存在する BLOB のバックアップを有効にするには、ストレージ アカウントに対するアクセス許可が付与されている必要があります。 コンテナーのシステム割り当てマネージド ID は、そのようなアクセス許可を割り当てるために使用されます。

アクセス許可の割り当て

作成されたコンテナー (コンテナー MSI と表示) と関連するストレージ アカウントに、Azure RBAC 経由でいくつかのアクセス許可を割り当てる必要があります。 これらは、ポータルまたは PowerShell を使用して実行できます。 すべての関連するアクセス許可については、こちらをご覧ください。

BLOB バックアップを構成するための要求の準備

バックアップ レベルの選択:

関連するすべてのアクセス許可が設定されたら、2 つの手順でバックアップの構成が行われます。 まず、Initialize-AzDataProtectionBackupInstance コマンドを使用して、関連するコンテナー、ポリシー、ストレージ アカウントを使用し、関連する要求を準備します。 次に、New-AzDataProtectionBackupInstance コマンドを使用して、ストレージ アカウント内の BLOB を保護する要求を送信します。

$instance = Initialize-AzDataProtectionBackupInstance -DatasourceType AzureBlob -DatasourceLocation $TestBkpvault.Location -PolicyId $blobBkpPol[0].Id -DatasourceId $SAId 
New-AzDataProtectionBackupInstance -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupInstance $instance

Name                                                       Type                                                  BackupInstanceName
----                                                       ----                                                  ------------------
blobrg-PSTestSA-3df6ac08-9496-4839-8fb5-8b78e594f166 Microsoft.DataProtection/backupVaults/backupInstances blobrg-PSTestSA-3df6ac08-9496-4839-8fb5-8b78e594f166

重要

BLOB のバックアップ用にストレージ アカウントを構成すると、変更フィードや削除ロックなど、いくつかの機能が影響を受けます。 詳細情報。

バックアップ インスタンスを更新する

バックアップの構成が完了した後に、バックアップ インスタンスに関連付けられているポリシーを変更することができます。 コンテナー化されたバックアップの場合は、バックアップ用に選択したコンテナーを変更することもできます。

バックアップ インスタンスを更新するには、以下のコマンドレットを実行します。

  1. Test-AzDataProtectionBackupInstanceReadiness コマンドを使用して、バックアップ インスタンスがバックアップを構成する準備ができているかどうかを確認します。 バックアップ インスタンスの準備ができていない場合、このコマンドは失敗します。

    このコマンドを使用して、バックアップ コンテナーにバックアップを構成するために必要なすべてのアクセス許可があるかどうかを確認することもできます。

  2. Update-AzDataProtectionBackupInstance を使用して、Azure BLOB のバックアップに使用するポリシーを変更します。 関連するバックアップ項目と新しいバックアップ ポリシーを指定します。

  3. ポリシーまたは新しいコンテナーを既存のバックアップ項目に更新します。

    1. New-AzStorageContext コマンドレットを使用して、ストレージ アカウント コンテキストを作成します。 データ操作が自分の Microsoft Entra 資格情報を使用して実行されるようにするために、-UseConnectedAccount パラメーターを指定します。 ストレージ アカウント コマンドの詳細について確認してください。

      Create a context object using Azure AD credentials
      $ctx = New-AzStorageContext -StorageAccountName xxx -UseConnectedAccount 
      
      
    2. Get-AzStorageContainer コマンドレットを使用してストレージ コンテナーを取得します。 単一のコンテナーを取得するには、-Name パラメーターを指定します。 特定の文字列で始まるコンテナーの一覧を返すには、-Prefix パラメーターの値を指定します。

    次の例では、個々のコンテナーと、コンテナー リソースの一覧の両方を取得しています。

    
    
    # Create variables
    $containerName  = "individual-container"
    $prefixName     = "loop-"
    
    # Approach 1: Retrieve an individual container
    Get-AzStorageContainer -Name $containerName -Context $ctx
    Write-Host
    
    # Approach 2: Retrieve a list of containers
    $targetContainers = Get-AzStorageContainer -Context $ctx | Where-Object { $_.Name -match "cont" } 
    

    結果には、以下のように、BLOB エンドポイントの URI が示され、名前とプレフィックスによって取得されたコンテナーの一覧が表示されます。

    Storage Account Name: demostorageaccount
    
    Name                 PublicAccess         LastModified                   IsDeleted  VersionId        
    ----                 ------------         ------------                   ---------  ---------        
    individual-container                      11/2/2021 5:52:08 PM +00:00                                
    
    loop-container1                           11/2/2021 12:22:00 AM +00:00                               
    loop-container2                           11/2/2021 12:22:00 AM +00:00                               
    
    loop-container1                           11/2/2021 12:22:00 AM +00:00                               
    loop-container2                           11/2/2021 12:22:00 AM +00:00
    loop-container3                           11/2/2021 12:22:00 AM +00:00   True       01D7E7129FDBD7D4
    loop-container4                           11/2/2021 12:22:00 AM +00:00   True       01D7E8A5EF01C787 
    
    1. 更新する必要があるバックアップ インスタンスをフェッチします。

      C:\Users\testuser> $instance = Search-AzDataProtectionBackupInstanceInAzGraph -Subscription "Demosub" -ResourceGroup Demo-BCDR-RG -Vault BCDR-BV-EastUS -DatasourceType AzureBlob
      PS C:\Users\testuser> $instance
                     Output
      Name                                                                     BackupInstanceName
      ----                                                                     ------------------
      blobsa-blobsa-c7325e08-980d-43b2-863f-68feee4fd03c               blobsa-blobsa-c7325e08-980d-43b2-863f-68feee4fd03c
      blobsavaulted-blobsavaulted-40c36519-f422-45aa-bbeb-3f0eedb440c7 blobsavaulted-blobsavaulted-40c36519-f422-45aa-bbeb-3f0eedb440c7
      testdpp-testdpp-ff4254dd-7a70-437b-9a10-8c0d2223d037                     testdpp-testdpp-ff4254dd-7a70-437b-9a10-8c0d2223d037
      
      
    2. バックアップ インスタンス内の更新したいコンテナー化されたポリシーの名前を使用して、バックアップ ポリシーをフェッチします。 バックアップ インスタンス内の更新する必要がある新しいポリシーをフェッチすることもできます。

      $updatePolicy = Get-AzDataProtectionBackupPolicy -SubscriptionId "Demosub" -VaultName BCDR-BV-EastUS -ResourceGroupName Demo-BCDR-RG -name continer-1
      
    3. コンテナーの新しい一覧 (既存のバックアップ コンテナーと新しいコンテナー) でバックアップ インスタンスを更新します。

      PS C:\Users\testuser> $updateBI = Update-AzDataProtectionBackupInstance -ResourceGroupName Daya-BCDR-RG -VaultName DPBCDR-BV-EastUS -BackupInstanceName $instance[0].Name -SubscriptionId "ef4ab5a7-c2c0-4304-af80-af49f48af3d1"  -PolicyId $updatePolicy.id -VaultedBackupContainer $targetContainers.name
      
      
      PS C:\Users\testuser> $updateBI.Property.PolicyInfo.PolicyId
      /subscriptions/ef4ab5a7-c2c0-4304-af80-af49f48af3d1/resourceGroups/Daya-BCDR-RG/providers/Microsoft.DataProtection/backupVaults/DPBCDR-BV-EastUS/backupPolicies/continerdeltest-1
      PS C:\Users\testuser> $updateBI.Property.PolicyInfo.PolicyParameter.BackupDatasourceParametersList[0].ContainersList
      cont-01
      cont-02
      cont-03
      cont-04
      cont-05
      cont-06
      cont-07
      cont-08
      cont-09
      cont-10
      cont-11
      

次のステップ

Azure PowerShell を使用して Azure BLOB を復元する