ブロック・ボリュームの保護
このトピックでは、ブロック・ボリュームのセキュリティ情報および推奨事項について説明します。
ブロック・ボリューム・サービスを使用すると、ブロック・ストレージ・ボリュームを動的にプロビジョニングおよび管理できます。ストレージ、パフォーマンスおよびアプリケーションの要件を満たすように、必要に応じて、ボリュームの作成、アタッチ、接続および移動と、ボリューム・パフォーマンスの変更を行うことができます。ボリュームをインスタンスにアタッチおよび接続した後は、そのボリュームを通常のハード・ドライブのように使用できます。また、データを失うことなく、ボリュームを切断して別のインスタンスにアタッチすることもできます。
セキュリティの責任
Block Volumeを安全に使用するには、セキュリティおよびコンプライアンスの責任について学んでください。
Oracleは、次のセキュリティ要件に対して責任を負います:
- 物理セキュリティ: Oracleは、Oracle Cloud Infrastructureで提供されるすべてのサービスを実行するグローバル・インフラストラクチャを保護する責任を負います。このインフラストラクチャは、Oracle Cloud Infrastructureサービスを実行するハードウェア、ソフトウェア、ネットワーキングおよび設備で構成されます。
お客様のセキュリティの責任についてこのページで説明します。次のような領域があります:
- アクセス制御: 可能なかぎり権限を制限します。ユーザーが作業を行うために必要なアクセス権のみを付与する必要があります。
- 暗号化と機密性:暗号化キーおよびシークレットを使用して、データを保護し、保護されたリソースに接続します。これらのキーを定期的にローテーションします。
初期セキュリティ・タスク 🔗
このチェックリストを使用して、新しいOracle Cloud Infrastructureテナンシでブロック・ボリュームを保護するために実行するタスクを識別します。
タスク | 詳細情報 |
---|---|
IAMポリシーを使用したユーザーおよびリソースへのアクセス権の付与 | IAMポリシー |
カスタム・キーを使用したリソースの暗号化 | データ暗号化 |
クラウド・ガードの有効化および構成(オプション) | クラウド・ガード |
セキュリティ・ゾーンの作成(オプション) | セキュリティ・ゾーン |
定期的なセキュリティ・タスク 🔗
IAMポリシー 🔗
ブロック・ボリュームへのアクセスは、ポリシーを使用して制限します。
ポリシーは、Oracle Cloud Infrastructureリソースに誰がどのようにアクセスできるかを指定します。詳細は、ポリシーの仕組みを参照してください。
グループに、その職責を実行するために必要な最小限の権限を割り当てます。各ポリシーには、グループに許可されるアクションを記述する動詞があります。使用可能な動詞は、アクセス・レベルが低い方から順にinspect
、read
、use
、manage
です。
IAMユーザーおよびグループの最小セットにDELETE
権限を付与することをお薦めします。この演習では、認可されたユーザーまたは悪意のあるアクターによる不注意な削除によるデータの損失を最小限に抑えます。DELETE
権限はテナンシ管理者にのみ付与します。
Oracle Cloud Infrastructureは、ブロック・ボリュームとブート・ボリュームという2つのタイプのボリュームをサポートしています。ブロック・ボリュームを使用すると、インスタンス・ストレージ容量を動的に拡張できます。ブート・ボリュームには、コンピュート・インスタンスの起動に使用されるイメージが含まれます。IAMサービスによって、関連するボリューム・リソース・タイプがグループ化され、volume-family
と呼ばれる結合リソース・タイプになります。
IAMユーザーおよびグループの最小限のアクセス権限を、volume-family
のリソース・タイプに割り当てます。volume-family
のリソース・タイプは、volumes
、volume-attachments
およびvolume-backups
です。
volumes
リソースは、インスタンス・ストレージ容量を動的に拡張できる、またはインスタンスを起動するイメージを格納できる、デタッチ可能なブロック・ボリューム・デバイスです。volume-attachments
リソースは、ボリュームとインスタンスの間のアタッチメントです。volume-backups
リソースは、ブロック・ボリュームの作成またはブロック・ボリュームのリカバリに使用できるボリュームのポイントインタイム・コピーです。
次のポリシーの例では、ボリュームおよびバックアップに対する削除以外のすべてのアクションの実行がグループVolumeUsers
に許可されます。
Allow group VolumeUsers to manage volumes in tenancy
where request.permission!='VOLUME_DELETE'
Allow group VolumeUsers to manage volume-backups in tenancy
where request.permission!='VOLUME_BACKUP_DELETE'
VolumeUsers
がインスタンスからボリュームをデタッチできない場合は、次のポリシーを前の例に追加できます。
Allow group VolumeUsers to manage volume-attachments in tenancy
where request.permission!='VOLUME_ATTACHMENT_DELETE'
ブロック・ボリューム・ポリシーの詳細およびその他の例については、コア・サービスの詳細を参照してください。
クラウド・ガード 🔗
クラウド・ガードを有効にして使用し、ブロック・ボリュームのセキュリティ問題を検出して対応します。
問題を検出すると、クラウド・ガードは修正アクションを提案します。特定のアクションを自動的に実行するようにクラウド・ガードを構成することもできます。クラウド・ガードには、ブロック・ボリュームに対する次のディテクタ・ルールが含まれています。
- ブロック・ボリュームが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-crypt
、veracrypt
、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を使用します。
暗号化されたボリュームにアクセスする必要がある場合:
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秘密キーであることが前提です。
データ耐久性 🔗
Block Volumeでデータの定期的なバックアップを実行します。バックアップを削除する最小限のユーザーおよびグループ・セット権限を付与することをお薦めします。
削除または破損によるデータの損失を最小限に抑えるために、ボリュームを定期的にバックアップすることをお薦めします。Oracle Cloud Infrastructureでは、スケジュール済バックアップを自動的に実行できます。スケジュール済バックアップの詳細は、ポリシーベースのバックアップを参照してください。
認可されたユーザーによる不注意な削除または悪意のある削除によるデータの損失を最小限に抑えるために、VOLUME_DELETE
、VOLUME_ATTACHMENT_DELETE
およびVOLUME_BACKUP_DELETE
権限をIAMユーザーおよびグループの最小セットに付与することをお薦めします。DELETE
権限は、テナンシ管理者およびコンパートメント管理者にのみ付与します。
監査中 🔗
Block Volumeのアクセス・ログおよびその他のセキュリティ・データを特定します。
Auditサービスは、Oracle Cloud Infrastructureリソースに対するすべてのAPIコールを自動的に記録します。Auditサービスを使用してテナンシ内のすべてのユーザー・アクティビティを監視することで、セキュリティおよびコンプライアンスの目標を達成できます。コンソール、SDKおよびコマンドライン(CLI)のコールはすべてAPIを経由するため、これらのソースからのすべてのアクティビティが含まれます。監査レコードは、認証済でフィルタ可能な問合せAPIから利用できます。また、オブジェクト・ストレージからバッチ・ファイルとして取得できます。監査ログの内容には、発生したアクティビティ、アクティビティを開始したユーザー、リクエストの日時、リクエストのソースIP、ユーザー・エージェントおよびHTTPヘッダーが含まれます。監査ログ・イベントの表示を参照してください。
{
"datetime": 1642993213028,
"logContent": {
"data": {
"additionalDetails": {
"X-Real-Port": 55984
},
"availabilityDomain": "AD3",
"compartmentId": "ocid1.compartment.oc1..<unique_ID>",
"compartmentName": "mycompartment",
"definedTags": null,
"eventGroupingId": "<unique_ID>",
"eventName": "ListBootVolumes",
"freeformTags": null,
"identity": {
"authType": null,
"callerId": null,
"callerName": null,
"consoleSessionId": null,
"credentials": "<key>",
"ipAddress": "<IP_address>",
"principalId": "<user_ID>",
"principalName": "<user_name>",
"tenantId": "ocid1.tenancy.oc1..<unique_ID>",
"userAgent": "Oracle-JavaSDK/1.37.1 (Linux/4.14.35-2047.510.4.1.el7uek.x86_64; Java/1.8.0_301; Java HotSpot(TM) 64-Bit Server VM GraalVM EE 20.3.3/25.301-b09-jvmci-20.3-b18)"
},
"message": "ListBootVolumes succeeded",
"request": {
"action": "GET",
"headers": {
"Accept": [
"application/json"
],
"Authorization": [
"Signature headers=\"date (request-target) host\",keyId=<key>"
],
"Connection": [
"keep-alive"
],
"Date": [
"Mon, 24 Jan 2022 03:00:12 GMT"
],
"User-Agent": [
"Oracle-JavaSDK/1.37.1 (Linux/4.14.35-2047.510.4.1.el7uek.x86_64; Java/1.8.0_301; Java HotSpot(TM) 64-Bit Server VM GraalVM EE 20.3.3/25.301-b09-jvmci-20.3-b18)"
],
"opc-client-info": [
"Oracle-JavaSDK/1.37.1"
],
"opc-request-id": [
"<unique_ID>"
]
},
"id": "<unique_ID>",
"parameters": {
"availabilityDomain": [
"EMIr:PHX-AD-3"
],
"compartmentId": [
"ocid1.compartment.oc1..<unique_ID>"
],
"limit": [
"1000"
]
},
"path": "/20160918/bootVolumes"
},
"resourceId": null,
"response": {
"headers": {
"Connection": [
"close"
],
"Content-Length": [
"2"
],
"Content-Type": [
"application/json"
],
"Date": [
"Mon, 24 Jan 2022 03:00:13 GMT"
],
"X-Content-Type-Options": [
"nosniff"
],
"opc-request-id": [
"<unique_ID>"
]
},
"message": null,
"payload": {},
"responseTime": "2022-01-24T03:00:13.028Z",
"status": "200"
},
"stateChange": {
"current": null,
"previous": null
}
},
"dataschema": "2.0",
"id": "<unique_ID>",
"oracle": {
"compartmentid": "ocid1.compartment.oc1..<unique_ID>",
"ingestedtime": "2022-01-24T03:00:45.483Z",
"loggroupid": "_Audit",
"tenantid": "ocid1.tenancy.oc1..<unique_ID>"
},
"source": "",
"specversion": "1.0",
"time": "2022-01-24T03:00:13.028Z",
"type": "com.oraclecloud.BlockVolumes.ListBootVolumes"
}
}
テナンシでクラウド・ガードを有効にした場合、潜在的なセキュリティ上の問題があるユーザー・アクティビティがレポートされます。問題を検出すると、クラウド・ガードは修正アクションを提案します。特定のアクションを自動的に実行するようにクラウド・ガードを構成することもできます。クラウド・ガードのスタート・ガイドおよびレポートされた問題の処理を参照してください。