Skip to main content
NetApp data management solutions
日本語は機械翻訳による参考訳です。内容に矛盾や不一致があった場合には、英語の内容が優先されます。

PowerShell を使用したONTAPサイバー ボールトの作成

共同作成者 kevin-hoke

従来の方法を使用するエアギャップ バックアップでは、スペースを作成し、プライマリ メディアとセカンダリ メディアを物理的に分離する必要があります。メディアをオフサイトに移動したり、接続を切断したりすることで、悪意のある人物がデータにアクセスできなくなります。これによりデータは保護されますが、回復時間が遅くなる可能性があります。 SnapLock Complianceを使用すると、物理的な分離は必要ありません。 SnapLock Compliance は、保管されたスナップショットのポイントインタイムの読み取り専用コピーを保護します。その結果、データにすぐにアクセスでき、削除や消去から保護され、変更や変更不可能から保護されます。

前提条件

このドキュメントの次のセクションの手順を開始する前に、次の前提条件が満たされていることを確認してください。

  • ソース クラスタはONTAP 9 以降を実行している必要があります。

  • ソース アグリゲートとデスティネーション アグリゲートはどちらも64ビットである必要があります。

  • ソース クラスタとデスティネーション クラスタのピア関係が確立されている必要があります。

  • ソース SVM と宛先 SVM はピアリングされている必要があります。

  • クラスター ピアリング暗号化が有効になっていることを確認します。

ONTAPサイバー ボールトへのデータ転送を設定するには、いくつかの手順が必要です。プライマリ ボリュームで、適切なスケジュールを使用して、作成するコピーと作成するタイミングを指定するスナップショット ポリシーを設定し、ラベルを割り当てて、 SnapVaultによって転送するコピーを指定します。セカンダリでは、転送する Snapshot コピーのラベルと、サイバー ボールトに保持するコピーの数を指定するSnapMirrorポリシーを作成する必要があります。これらのポリシーを設定した後、 SnapVault関係を作成し、転送スケジュールを確立します。

メモ このドキュメントでは、プライマリ ストレージと指定されたONTAPサイバー ボールトがすでにセットアップされ、構成されていることを前提としています。
メモ サイバー ボールト クラスターは、ソース データと同じデータ センターまたは異なるデータ センターに配置できます。

ONTAPサイバーボールトを作成する手順

  1. コンプライアンス クロックを初期化するには、 ONTAP CLI または System Manager を使用します。

  2. SnapLockコンプライアンスを有効にしたデータ保護ボリュームを作成します。

  3. SnapMirror create コマンドを使用して、 SnapVaultデータ保護関係を作成します。

  4. 宛先ボリュームのデフォルトのSnapLock Compliance保持期間を設定します。

メモ デフォルトの保持期間は「最小に設定」です。バックアップ デスティネーションであるSnapLockボリュームには、デフォルトの保持期間が割り当てられます。この期間の値は、最初は最小 0 年、最大 100 年に設定されます ( ONTAP 9.10.1 以降)。以前のONTAPリリースでは、値は 0 ~ 70 です。)各NetApp Snapshotコピーは、最初はこのデフォルトの保持期間でコミットされます。保存期間は必要に応じて後で延長できますが、短縮することはできません。詳細については、以下を参照してください。 "保持時間の設定の概要"

上記には手動の手順が含まれています。セキュリティ専門家は、大きなエラーの余地をもたらす手動管理を避けるために、プロセスを自動化することを推奨しています。以下は、 SnapLockコンプライアンスの前提条件と構成、およびクロックの初期化を完全に自動化するコード スニペットです。

以下は、 ONTAPコンプライアンス クロックを初期化する PowerShell コードの例です。

function initializeSnapLockComplianceClock {
    try {
        $nodes = Get-NcNode

        $isInitialized = $false
        logMessage -message "Cheking if snaplock compliance clock is initialized"
        foreach($node in $nodes) {
            $check = Get-NcSnaplockComplianceClock -Node $node.Node
            if ($check.SnaplockComplianceClockSpecified -eq "True") {
                $isInitialized = $true
            }
        }

        if ($isInitialized) {
            logMessage -message "SnapLock Compliance clock already initialized" -type "SUCCESS"
        } else {
            logMessage -message "Initializing SnapLock compliance clock"
            foreach($node in $nodes) {
                Set-NcSnaplockComplianceClock -Node $node.Node
            }
            logMessage -message "Successfully initialized SnapLock Compliance clock" -type "SUCCESS"
        }
    } catch {
        handleError -errorMessage $_.Exception.Message
    }
}

ONTAPサイバー ボールトを構成するための PowerShell コード例を次に示します。

function configureCyberVault {
    for($i = 0; $i -lt $DESTINATION_VOLUME_NAMES.Length; $i++) {
        try {
            # checking if the volume already exists and is of type snaplock compliance
            logMessage -message "Checking if SnapLock Compliance volume $($DESTINATION_VOLUME_NAMES[$i]) already exists in vServer $DESTINATION_VSERVER"
            $volume = Get-NcVol -Vserver $DESTINATION_VSERVER -Volume $DESTINATION_VOLUME_NAMES[$i] | Select-Object -Property Name, State, TotalSize, Aggregate, Vserver, Snaplock | Where-Object { $_.Snaplock.Type -eq "compliance" }
            if($volume) {
                $volume
                logMessage -message "SnapLock Compliance volume $($DESTINATION_VOLUME_NAMES[$i]) already exists in vServer $DESTINATION_VSERVER" -type "SUCCESS"
            } else {
                # Create SnapLock Compliance volume
                logMessage -message "Creating SnapLock Compliance volume: $($DESTINATION_VOLUME_NAMES[$i])"
                New-NcVol -Name $DESTINATION_VOLUME_NAMES[$i] -Aggregate $DESTINATION_AGGREGATE_NAMES[$i] -SnaplockType Compliance -Type DP -Size $DESTINATION_VOLUME_SIZES[$i] -ErrorAction Stop | Select-Object -Property Name, State, TotalSize, Aggregate, Vserver
                logMessage -message "Volume $($DESTINATION_VOLUME_NAMES[$i]) created successfully" -type "SUCCESS"
            }

            # Set SnapLock volume attributes
            logMessage -message "Setting SnapLock volume attributes for volume: $($DESTINATION_VOLUME_NAMES[$i])"
            Set-NcSnaplockVolAttr -Volume $DESTINATION_VOLUME_NAMES[$i] -MinimumRetentionPeriod $SNAPLOCK_MIN_RETENTION -MaximumRetentionPeriod $SNAPLOCK_MAX_RETENTION -ErrorAction Stop | Select-Object -Property Type, MinimumRetentionPeriod, MaximumRetentionPeriod
            logMessage -message "SnapLock volume attributes set successfully for volume: $($DESTINATION_VOLUME_NAMES[$i])" -type "SUCCESS"

            # checking snapmirror relationship
            logMessage -message "Checking if SnapMirror relationship exists between source volume $($SOURCE_VOLUME_NAMES[$i]) and destination SnapLock Compliance volume $($DESTINATION_VOLUME_NAMES[$i])"
            $snapmirror = Get-NcSnapmirror | Select-Object SourceCluster, SourceLocation, DestinationCluster, DestinationLocation, Status, MirrorState | Where-Object { $_.SourceCluster -eq $SOURCE_ONTAP_CLUSTER_NAME -and $_.SourceLocation -eq "$($SOURCE_VSERVER):$($SOURCE_VOLUME_NAMES[$i])" -and $_.DestinationCluster -eq $DESTINATION_ONTAP_CLUSTER_NAME -and $_.DestinationLocation -eq "$($DESTINATION_VSERVER):$($DESTINATION_VOLUME_NAMES[$i])" -and ($_.Status -eq "snapmirrored" -or $_.Status -eq "uninitialized") }
            if($snapmirror) {
                $snapmirror
                logMessage -message "SnapMirror relationship already exists for volume: $($DESTINATION_VOLUME_NAMES[$i])" -type "SUCCESS"
            } else {
                # Create SnapMirror relationship
                logMessage -message "Creating SnapMirror relationship for volume: $($DESTINATION_VOLUME_NAMES[$i])"
                New-NcSnapmirror -SourceCluster $SOURCE_ONTAP_CLUSTER_NAME -SourceVserver $SOURCE_VSERVER -SourceVolume $SOURCE_VOLUME_NAMES[$i] -DestinationCluster $DESTINATION_ONTAP_CLUSTER_NAME -DestinationVserver $DESTINATION_VSERVER -DestinationVolume $DESTINATION_VOLUME_NAMES[$i] -Policy $SNAPMIRROR_PROTECTION_POLICY -Schedule $SNAPMIRROR_SCHEDULE -ErrorAction Stop | Select-Object -Property SourceCluster, SourceLocation, DestinationCluster, DestinationLocation, Status, Policy, Schedule
                logMessage -message "SnapMirror relationship created successfully for volume: $($DESTINATION_VOLUME_NAMES[$i])" -type "SUCCESS"
            }

        } catch {
            handleError -errorMessage $_.Exception.Message
        }
    }
}
  1. 上記の手順が完了すると、 SnapLock ComplianceとSnapVaultを使用したエアギャップ サイバー ボールトの準備が整います。

スナップショット データをサイバー ボールトに転送する前に、 SnapVault関係を初期化する必要があります。ただし、その前に、金庫を保護するためにセキュリティ強化を実行する必要があります。