このページは機械翻訳したものです。

ブロック・ボリュームの保護

このトピックでは、ブロック・ボリュームのセキュリティ情報および推奨事項について説明します。

ブロック・ボリューム・サービスを使用すると、ブロック・ストレージ・ボリュームを動的にプロビジョニングおよび管理できます。ストレージ、パフォーマンスおよびアプリケーションの要件を満たすように、必要に応じて、ボリュームの作成、アタッチ、接続および移動と、ボリューム・パフォーマンスの変更を行うことができます。ボリュームをインスタンスにアタッチおよび接続した後は、そのボリュームを通常のハード・ドライブのように使用できます。また、データを失うことなく、ボリュームを切断して別のインスタンスにアタッチすることもできます。

セキュリティの責任

Block Volumeを安全に使用するには、セキュリティおよびコンプライアンスの責任について学んでください。

通常、Oracleはクラウド・インフラストラクチャおよび操作のセキュリティ(クラウド・オペレータのアクセス制御やインフラストラクチャ・セキュリティ・パッチ適用など)を提供します。クラウド・リソースをセキュアに構成する責任はユーザーにあります。クラウドのセキュリティは、ユーザーとOracleの共同責任です。

Oracleは、次のセキュリティ要件に対して責任を負います:

  • 物理セキュリティ: Oracleは、Oracle Cloud Infrastructureで提供されるすべてのサービスを実行するグローバル・インフラストラクチャを保護する責任を負います。このインフラストラクチャは、Oracle Cloud Infrastructureサービスを実行するハードウェア、ソフトウェア、ネットワーキングおよび設備で構成されます。

お客様のセキュリティの責任についてこのページで説明します。次のような領域があります:

  • アクセス制御: 可能なかぎり権限を制限します。ユーザーが作業を行うために必要なアクセス権のみを付与する必要があります。
  • 暗号化と機密性:暗号化キーおよびシークレットを使用して、データを保護し、保護されたリソースに接続します。これらのキーを定期的にローテーションします。

初期セキュリティ・タスク

このチェックリストを使用して、新しいOracle Cloud Infrastructureテナンシでブロック・ボリュームを保護するために実行するタスクを識別します。

タスク 詳細情報
IAMポリシーを使用したユーザーおよびリソースへのアクセス権の付与 IAMポリシー
カスタム・キーを使用したリソースの暗号化 データ暗号化
クラウド・ガードの有効化および構成(オプション) クラウド・ガード
セキュリティ・ゾーンの作成(オプション) セキュリティ・ゾーン

定期的なセキュリティ・タスク

ブロック・ボリュームの開始後、このチェックリストを使用して、定期的に実行することが推奨されるセキュリティ・タスクを識別します。

タスク 詳細情報
暗号化キーのローテーション データ暗号化
クラウド・ガードで検出された問題への対応 クラウド・ガード
定期的にバックアップを実行します データ耐久性
セキュリティ監査を実行します 監査

IAMポリシー

ブロック・ボリュームへのアクセスは、ポリシーを使用して制限します。

ポリシーは、Oracle Cloud Infrastructureリソースに誰がどのようにアクセスできるかを指定します。詳細は、ポリシーの仕組みを参照してください。

グループに、その職責を実行するために必要な最小限の権限を割り当てます。各ポリシーには、グループに許可されるアクションを記述する動詞があります。使用可能な動詞は、アクセス・レベルが低い方から順にinspectreadusemanageです。

IAMユーザーおよびグループの最小セットにDELETE権限を付与することをお薦めします。この演習では、認可されたユーザーまたは悪意のあるアクターによる不注意な削除によるデータの損失を最小限に抑えます。DELETE権限はテナンシ管理者にのみ付与します。

Oracle Cloud Infrastructureは、ブロック・ボリュームとブート・ボリュームという2つのタイプのボリュームをサポートしています。ブロック・ボリュームを使用すると、インスタンス・ストレージ容量を動的に拡張できます。ブート・ボリュームには、コンピュート・インスタンスの起動に使用されるイメージが含まれます。IAMサービスによって、関連するボリューム・リソース・タイプがグループ化され、volume-familyと呼ばれる結合リソース・タイプになります。

IAMユーザーおよびグループの最小限のアクセス権限を、volume-familyのリソース・タイプに割り当てます。volume-familyのリソース・タイプは、volumesvolume-attachmentsおよびvolume-backupsです。

  • volumesリソースは、インスタンス・ストレージ容量を動的に拡張できる、またはインスタンスを起動するイメージを格納できる、デタッチ可能なブロック・ボリューム・デバイスです。
  • volume-attachmentsリソースは、ボリュームとインスタンスの間のアタッチメントです。
  • volume-backupsリソースは、ブロック・ボリュームの作成またはブロック・ボリュームのリカバリに使用できるボリュームのポイントインタイム・コピーです。

ブロック・ボリューム・ポリシーの詳細およびその他の例については、コア・サービスの詳細を参照してください。

クラウド・ガード

クラウド・ガードを有効にして使用し、ブロック・ボリュームのセキュリティ問題を検出して対応します。

問題を検出すると、クラウド・ガードは修正アクションを提案します。特定のアクションを自動的に実行するようにクラウド・ガードを構成することもできます。クラウド・ガードには、ブロック・ボリュームに対する次のディテクタ・ルールが含まれています。

  • ブロック・ボリュームがOracle管理キーで暗号化されています
  • ブロック・ボリュームがアタッチされていません

クラウド・ガードで使用可能なすべてのディテクタ・ルールのリストは、ディテクタ・レシピ・リファレンスを参照してください。

まだ行っていない場合は、クラウド・ガードを有効にし、リソースを含むコンパートメントを監視するように構成します。クラウド・ガード・ターゲットを構成して、テナンシ全体(ルート・コンパートメントおよびすべてのサブコンパートメント)を調査するか、特定のコンパートメントのみをチェックできます。クラウド・ガードの開始を参照してください。

クラウド・ガードを有効にすると、検出されたセキュリティの問題を表示して解決できます。「報告された問題の処理」を参照してください。

セキュリティ・ゾーン

セキュリティ・ゾーンを使用すると、ブロック・ボリュームのリソースがセキュリティのベスト・プラクティスに準拠していることが保証されます。

セキュリティ・ゾーンは、1つ以上のコンパートメントおよびセキュリティ・ゾーン・レシピに関連付けられます。セキュリティ・ゾーンのコンパートメントでリソースを作成および更新すると、Oracle Cloud Infrastructureでは、これらの操作がレシピのセキュリティ・ゾーン・ポリシーのリストに対して検証されます。レシピ内のポリシーに違反している場合、操作は拒否されます。次のセキュリティ・ゾーン・ポリシーは、ブロック・ボリュームのリソースに使用できます。

  • deny block_volume_not_in_security_​zone_attach_to_instance_​in_security_zone
  • deny block_volume_in_security_​zone_attach_to_instance_​not_in_security_zone
  • deny boot_volume_not_in_security_​zone_attach_to_instance_​in_security_zone
  • deny boot_volume_in_security_​zone_attach_to_instance_​not_in_security_zone
  • deny attached_block_volume_not_​in_security_zone_move_to_​compartment_in_security_zone
  • deny attached_boot_volume_not_in_​security_zone_move_to_​compartment_in_security_zone
  • deny block_volume_without_​vault_key
  • deny boot_volume_without_​vault_key

すべてのセキュリティ・ゾーン・ポリシーのリストは、セキュリティ・ゾーン・ポリシーを参照してください。

既存のリソースをセキュリティ・ゾーン内のコンパートメントに移動するには、リソースがゾーンのレシピ内のすべてのセキュリティ・ゾーン・ポリシーに準拠している必要があります。同様に、セキュリティ・ゾーン内のリソースはセキュリティ・ゾーンの外部のコンパートメントに移動できません。移動するとセキュリティが低下する可能性があるためです。「セキュリティ・ゾーンの管理」を参照してください。

データ暗号化

ブロック・ボリューム・サービスは、256ビット暗号化によるAdvanced Encryption Standard (AES)アルゴリズムを使用して、保存されているすべてのブロック・ボリューム、ブート・ボリュームおよびボリューム・バックアップを常に暗号化します。Oracle提供の暗号化キーまたはVaultサービスでカスタム・キーを使用できます。dm-cryptveracrypt、Bit-Lockerなどのツールを使用してデータ・ボリュームを暗号化することもできます。

デフォルトでは、すべてのボリュームとそのバックアップは、Oracle提供の暗号化キーを使用して暗号化されます。ボリュームがバックアップからクローニングまたはリストアされるたびに、ボリュームに新しい一意の暗号化キーが割り当てられます。

Vault Serviceを使用したボリュームの暗号化

デフォルトの暗号化キーは、特定のOracle Cloud Infrastructureリソースの作成時に自動的に生成できますが、Vaultサービスで独自のカスタム暗号化キーを作成および管理することをお薦めします。

ボールトは、データの保護に使用する暗号化キーを格納する論理エンティティです。保護モードに応じて、キーはサーバーに格納されるか、高可用性および耐久性のあるハードウェア・セキュリティ・モジュール(HSM)に格納されます。当社のHSMは、連邦情報処理標準(FIPS) 140-2セキュリティ・レベル3のセキュリティ認証を満たしています。ボールトの管理およびキーの管理を参照してください。

Vaultサービスで暗号化キーを作成およびローテーションし、ブロック・ボリュームのリソースを保護します。ブロック・ボリュームの作成およびブロック・ボリュームへのキーの割当てを参照してください。

各マスター暗号化キーには、キー・バージョンが自動的に割り当てられます。キーをローテーションすると、ボールト・サービスにより新しいキー・バージョンが生成されます。定期的にキーをローテーションすると、1つのキー・バージョンによって暗号化または署名されるデータの量が制限されます。キーが構成されたことがある場合、キーのローテーションによってデータのリスクが軽減されます。キーの管理を参照してください。

IAMポリシーを使用して、暗号化キーの作成、ローテーションおよび削除を厳密に制限することをお薦めします。Vaultサービスの詳細を参照してください。

dm-cryptによるルート以外のボリュームの暗号化

dm-cryptは、カーネルレベルの暗号化メカニズム(Linux devicemapperフレームワークに含まれる)で、暗号化ボリュームを提供します。ファイルシステム(たとえば、ext4やNTFS)から渡されるデータを暗号化し、Linux Unified Key Setup (LUKS)形式でストレージ・デバイスに格納します。

暗号化されたボリュームは、完全なディスク、ディスク・パーティション、論理ボリューム、またはループバック・デバイスを使用して作成されたファイル対応のストレージに格納できます。Cryptsetupは、dm-cryptの管理に使用され、パーティションおよびファイルの暗号化に使用されるユーザー・レベルのユーティリティです。dm-cryptは、暗号化ルーチンにLinux crypto APIを使用します。

  1. ブロック・ストレージ・ボリュームをインスタンスにアタッチします(たとえば/dev/sdb)
  2. LUKS暗号化のために/dev/sdbをフォーマットします。プロンプトが表示されたら、LUKSパスフレーズを入力します。パスフレーズは、ボリュームの暗号化に使用されるLUKSマスター・キーの暗号化に使用されます。
    cryptsetup -y luksFormat /dev/sdb
  3. LUKSのフォーマットが成功したことを確認します。
    cryptsetup isLuks /dev/sdb && echo Success
  4. デバイスに関する暗号化情報を取得します。
    cryptsetup luksDump /dev/sdb
  5. デバイスのLUKS UUIDを取得します。UUID値は、/etc/crypttabの構成に使用されます。
    cryptsetup luksUUID /dev/sdb
  6. デバイス名dev_nameを指定してLUKSコンテナを作成します。このコマンドは、デバイス・ノード/dev/mapper/<dev_name>も作成します。
    cryptsetup luksOpen /dev/sdb <dev_name>
  7. マップされたデバイスの情報を取得します。
    dmsetup info <dev_name>
  8. デバイスノードをext4ファイルシステムとしてフォーマットします。
    sudo mkfs -t ext4 /dev/sdb 
  9. デバイス・ノードをマウントします。
    mount /dev/mapper/<dev_name> /home/encrypt_fs
  10. /etc/crypttabにエントリを追加します。
    <dev_name> UUID=<LUKS UUID of /dev/sdb> none

    /home/encrypt_fsにコピーされたすべてのファイルは、LUKSによって暗号化されます。

  11. 暗号化されたボリュームの使用可能なキースロットにキーファイルを追加します。このキーファイルは、暗号化されたボリュームにアクセスするために使用できます。
    dd if=/dev/urandom of=$HOME/keyfile bs=32 count=1
    chmod 600 $HOME/keyfile
    cryptsetup luksAddKey /dev/sdb ~/keyfile
  12. ファイルの暗号化ステータスを確認します。
    cryptsetup status /home/encrypt_fs
  13. 完了後にアンマウントします。
    umount /home/encrypt_fs
    cryptsetup luksClose <dev_name>

暗号化されたボリュームにアクセスする必要がある場合:

cryptsetup luksOpen /dev/sdb <dev_name> --key-file=/home/opc/keyfile
mount /dev/mapper/<dev_name> /home/encrypt_fs

キーファイルを失うか、キーファイルまたはパスフレーズが破損した場合は、暗号化されたボリュームを復号化することはできません。その結果、データが永久に失われます。キーファイルの永続コピーは、オンプレミス・ホストに格納することをお薦めします。

dm-cryptで暗号化されたデータ・ボリュームのリモート・マウント

次のステップでは、キーファイルがオンプレミス・ホスト(SRC_IP)にあり、<OCI_SSH_KEY>がインスタンスのSSH秘密キーであることが前提です。

  1. オンプレミス・ホストからインスタンスにキーファイルをコピーします。
    scp -i <OCI_SSH_KEY> keyfile opc@<SRC_IP>:/home/opc
  2. 暗号化されたボリュームを開きます。
    ssh i <OCI_SSH_KEY> opc@<SRC_IP> "cryptsetup luksOpen /dev/sdb <dev_name> --key-file=/home/opc/keyfile"
  3. ボリュームをマウントします。
    ssh -i <OCI_SSH_KEY> opc@<SRC_IP> "mount /dev/mapper/<dev_name> /home/encrypt_fs"
  4. マウントされたボリューム内のデータに対して操作を実行します。
  5. 暗号化されたボリュームをアンマウントします。
    ssh -i <OCI_SSH_KEY> opc@<SRC_IP> "umount /home/encrypt_fs"
    ssh -i <OCI_SSH_KEY> opc@<SRC_IP> "cryptsetup luksClose <dev_name>"
  6. インスタンスからキーファイルを削除します。
    ssh -i <OCI_SSH_KEY> opc@<SRC_IP> "\rm -f /home/opc/keyfile"

データ耐久性

Block Volumeでデータの定期的なバックアップを実行します。バックアップを削除する最小限のユーザーおよびグループ・セット権限を付与することをお薦めします。

削除または破損によるデータの損失を最小限に抑えるために、ボリュームを定期的にバックアップすることをお薦めします。Oracle Cloud Infrastructureでは、スケジュール済バックアップを自動的に実行できます。スケジュール済バックアップの詳細は、ポリシーベースのバックアップを参照してください。

認可されたユーザーによる不注意な削除または悪意のある削除によるデータの損失を最小限に抑えるために、VOLUME_DELETEVOLUME_ATTACHMENT_DELETEおよびVOLUME_BACKUP_DELETE権限をIAMユーザーおよびグループの最小セットに付与することをお薦めします。DELETE権限は、テナンシ管理者およびコンパートメント管理者にのみ付与します。

監査中

Block Volumeのアクセス・ログおよびその他のセキュリティ・データを特定します。

Auditサービスは、Oracle Cloud Infrastructureリソースに対するすべてのAPIコールを自動的に記録します。Auditサービスを使用してテナンシ内のすべてのユーザー・アクティビティを監視することで、セキュリティおよびコンプライアンスの目標を達成できます。コンソール、SDKおよびコマンドライン(CLI)のコールはすべてAPIを経由するため、これらのソースからのすべてのアクティビティが含まれます。監査レコードは、認証済でフィルタ可能な問合せAPIから利用できます。また、オブジェクト・ストレージからバッチ・ファイルとして取得できます。監査ログの内容には、発生したアクティビティ、アクティビティを開始したユーザー、リクエストの日時、リクエストのソースIP、ユーザー・エージェントおよびHTTPヘッダーが含まれます。監査ログ・イベントの表示を参照してください。

テナンシでクラウド・ガードを有効にした場合、潜在的なセキュリティ上の問題があるユーザー・アクティビティがレポートされます。問題を検出すると、クラウド・ガードは修正アクションを提案します。特定のアクションを自動的に実行するようにクラウド・ガードを構成することもできます。クラウド・ガードのスタート・ガイドおよびレポートされた問題の処理を参照してください。