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

コンピュートの保護

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

コンピュート・サービスを使用すると、インスタンスと呼ばれるコンピュート・ホストをプロビジョニングおよび管理できます。コンピュートおよびアプリケーションの要件に合せ、必要に応じてインスタンスを作成できます。インスタンスを作成したら、コンピュータからインスタンスに安全にアクセスし、再起動、ボリュームのアタッチやデタッチを行い、完了時にはインスタンスを終了できます。インスタンスのローカル・ドライブに対して行った変更内容は、インスタンスを終了すると失われます。インスタンスにアタッチされたボリュームに保存された変更内容は保持されます。

セキュリティの責任

コンピュートをセキュアに使用するために、セキュリティおよびコンプライアンスの責任について学習します。

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

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

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

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

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

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

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

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

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

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

タスク 詳細情報
暗号化キーのローテーション データ暗号化
クラウド・ガードで検出された問題への対応 クラウド・ガード
最新のセキュリティ・パッチの適用 パッチ適用中
セキュリティ監査を実行します 監査

IAMポリシー

コンピュートへのアクセスは、ポリシーを使用して制限します。

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

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

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

次のすべての例で、ポリシーの対象範囲はテナンシです。ただし、コンパートメント名を指定することによって、テナンシ内の特定のコンパートメントを対象範囲に絞り込むことができます。

コンピュート・ポリシーの詳細およびその他の例については、コア・サービスの詳細を参照してください。

アクセス制御

IAMポリシーの作成に加えて、コンピュート・インスタンスへのアクセスをロックダウンします。

他のサービスへのインスタンス・アクセス

Oracle Cloud Infrastructureインスタンス・プリンシパル機能を使用して、IAMユーザーのかわりにインスタンスが他のサービスにアクセスすることを認可できます。

たとえば、インスタンスはブロック・ボリューム、ネットワーキング、ロード・バランサまたはオブジェクト・ストレージにアクセスできます。

この機能を使用するには、動的グループを作成し、そのグループにサービスAPIへのアクセス権を付与します。動的グループを使用すると、(ユーザー・グループと同様に) Oracle Cloud Infrastructureコンピュート・インスタンスを「プリンシパル」の俳優としてグループ化できます。ポリシーを作成すると、インスタンスがOracle Cloud Infrastructureサービスに対してAPIコールを実行できるようになります

動的グループを作成する場合、メンバーをグループに明示的に追加するのではなく、グループ・メンバーを定義する一致ルールのセットを定義します。APIコールに署名する有効期限が短い秘密キーは、インスタンス・メタデータ・サービス(http://169.254.169.254/opc/<version>/identity/cert.pem)を介して提供され、1日に数回ローテーションされます。インスタンスのサービスにアクセスする方法の詳細は、インスタンスからのサービスの呼出しを参照してください。

インスタンス・メタデータへのアクセス

インスタンス・メタデータ・アクセスは、インスタンスの特権ユーザーに制限することをお薦めします。

インスタンス・メタデータ(http://169.254.169.254)は、OCID、表示名、カスタム・フィールドなどの事前定義済インスタンス情報を提供します。インスタンス・メタデータは、動的グループ資格証明などの短期間の資格証明を提供することもできます。次の例は、iptablesを使用して、インスタンス・メタデータ・アクセスをrootユーザーに制限する方法を示しています。

iptables -A OUTPUT -m owner ! --uid-owner root -d 169.254.169.254 -j DROP

インスタンスは、リンクのローカル・アドレスを使用して、インスタンス・メタデータ・サービス(169.254.169.254:80)、DNS (169.254.169.254:53)、NTP (169.254.169.254:123)、カーネル更新(169.254.0.3)、およびブート・ボリュームへのiSCSI接続(169.254.0.2:3260169.254.2.0/24:3260)にアクセスします。iptablesなどのホストベースのファイアウォールを使用して、rootユーザーのみがこれらのIPにアクセスする権限を持つことを確認できます。これらのオペレーティング・システムのファイアウォール・ルールが変更されていないことを確認します。

インスタンス・メタデータ・サービスは、バージョン1とバージョン2の2つのバージョンで使用できます。IMDSv2は、v1と比較してセキュリティが強化されています。IMDSv1を無効にし、IMDSv2へのリクエストのみを許可することをお薦めします。インスタンス・メタデータ・サービスv2へのアップグレードを参照してください。

クラウド・ガード

クラウド・ガードを有効にし、これを使用してコンピュート・リソースのセキュリティの問題を検出して対応します。

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

  • インスタンスにパブリックIPアドレスがあります
  • インスタンスはOracleイメージを実行しています
  • インスタンスがOracleイメージを実行していません
  • インスタンスにパブリックにアクセスできません
  • インスタンスが終了しました
  • イメージのエクスポート
  • イメージのインポート
  • イメージの更新

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

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

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

セキュリティ・ゾーン

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

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

  • deny instance_in_security_zone_​launch_from_boot_volume_​not_in_security_zone
  • deny instance_in_security_zone_​in_subnet_not_in_security_​zone
  • deny instance_without_​sanctioned_image
  • deny boot_volume_not_in_security_​zone_attach_to_instance_​in_security_zone
  • deny boot_volume_without_​vault_key

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

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

データ暗号化

Vaultサービスで暗号化キーを作成してローテーションし、Compute内のリソースを保護します。

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

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

インスタンス・ブート・ボリュームはデフォルトで暗号化されます。インスタンスを作成する際、カスタム暗号化キーを使用して、ブート・ボリュームに保存されているデータを暗号化できます。インスタンスに対して転送中暗号化を有効にすると、カスタム・キーも転送中暗号化に使用されます。インスタンスの作成を参照してください。

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

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

ネットワーク・セキュリティ

Secure Shell (SSH)を含む、Computeサービスのリソースへのネットワーク・アクセスを保護します。

すべてのインスタンスでSSHを強化します。次の表に、SSHセキュリティーの推奨事項を示します。SSH構成オプションは、sshd_configファイルに設定できます。Linuxでは、このファイルは/etc/ssh/sshd_configにあります。

セキュリティの推奨事項 sshd_configの構成 コメント
公開キー・ログインのみを使用 PubkeyAuthentication yes ~/.ssh/authorized_keysファイルのSSH公開キーを定期的に確認します。
パスワード・ログインの無効化 PasswordAuthentication no 総当たりパスワード攻撃を軽減します。
ルート・ログインの無効化 PermitRootLogin no リモート・ログインのルート権限を防ぎます
SSHポートを標準以外のポートに変更 Port <port_number> オプションです。SSHでポート22を使用するアプリケーションがこの変更で破損しないことを確認します。

セキュアなSSH秘密キーを使用して、インスタンスにアクセスし、不注意な開示を防止します。SSHキー・ペアの作成とキーを使用したインスタンスの構成の詳細は、Linuxインスタンスでのキー・ペアの管理を参照してください。

セキュリティ・リストネットワーク・セキュリティ・グループ、またはこの両方の組合せを使用して、VCN (仮想クラウド・ネットワーク)のリソース内外のパケット・レベルのトラフィックを制御します。アクセスとセキュリティを参照してください。

Fail2banは、強制サインイン試行(インスタンスへのサインインに失敗した試行が多すぎる)に関連するIPアドレスをブロックリストに登録するアプリケーションです。デフォルトでは、Fail2banはSSHアクセスを検査し、他のプロトコルを検査するように構成できます。Fail2banの詳細は、Fail2banのメイン・ページを参照してください。

VCNネットワーク・セキュリティ・グループおよびセキュリティ・リストに加えて、iptablesfirewalldなどのホストベースのファイアウォールを使用して、ポート、プロトコル、パケット・タイプを制御することで、インスタンスへのネットワーク・アクセスを制限します。これらのファイアウォールを使用して、ポート・スキャンや侵入試行などの潜在的なネットワーク・セキュリティ攻撃の再接続を防止します。カスタム・ファイアウォール・ルールは、起動するインスタンスごとに構成、保存および初期化できます。次の例は、iptablesのコマンドを示しています。

# save iptables rules after configuration 
sudo iptables-save > /etc/iptables/iptables.rules 
# restore iptables rules on next reboot 
sudo /sbin/iptables-restore < /etc/iptables.rules 
# restart iptables after restore 
sudo service iptables restart

VCNにサブネットを作成すると、デフォルトでサブネットはパブリックとみなされ、インターネット通信が許可されます。プライベート・サブネットを使用して、インターネット・アクセスを必要としないリソースをホストします。VCN内のサービス・ゲートウェイを構成して、プライベート・サブネット上のリソースが他のクラウド・サービスにアクセスできるようにすることもできます。Connectivity Choicesを参照してください。

要塞サービスは、パブリック・エンドポイントがないターゲット・リソースへの制限および時間制限付きのアクセスを提供します。要塞を使用すると、認可されたユーザーがSecure Shell (SSH)セッションを介してプライベート・エンドポイントのターゲット・リソースに接続できます。接続したユーザーは、SSHでサポートされている任意のソフトウェアまたはプロトコルを使用してターゲット・リソースとやり取りできます。要塞の管理を参照してください。

Web Application Firewall (WAF)を使用して、クロスサイト・スクリプティング(XSS)、SQLインジェクションおよびその他のOWASP定義の脆弱性を含むインターネット脅威の保護ルールを作成および管理します。必要なボットが入ることは許可されていますが、不要なボットは軽減できます。WAFは、Webアプリケーションへのトラフィックを経時的に監視し、構成するための新しいルールを推奨します。「エッジ・ポリシーの開始」を参照してください。

パッチ適用中

コンピュート・リソースが最新のセキュリティ更新を実行していることを確認します。

セキュリティ・パッチにより、インスタンス・ソフトウェアを最新の状態に保ちます。使用可能な最新のソフトウェア更新をインスタンスに定期的に適用することをお薦めします。Oracle Autonomous Linuxイメージは、最新パッチで自動的に更新されます。Oracle Linuxイメージでは、sudo yum updateコマンドを実行できます(Oracle Linux 8ではsudo dnf update)。Oracle Linuxで、yum-securityプラグインを使用して、入手できるセキュリティ・パッチとインストールされたセキュリティ・パッチの情報を取得します。次の例では、yum-securityのコマンドを提供します。

# Install yum-security plugin
yum install yum-plugin-security
# Get list of security patches without installing them
yum updateinfo list security all
# Get list of installed security patches
yum updateinfo list security all

Oracle Cloud Infrastructure上のLinuxインスタンスでは、Oracle Kspliceを使用して再起動せずに重要なカーネル・パッチを適用できます。Kspliceは、Oracle Linux、CentOSおよびUbuntuの特定のカーネル・バージョンを維持できます。詳細は、Oracle Kspliceを参照してください。

Oracle Cloud Infrastructure Vulnerability Scanning Serviceを使用すると、ホストで潜在的な脆弱性を定期的にチェックすることで、セキュリティ状態を改善できます。このサービスは、これらの脆弱性に関するメトリックと詳細を含むレポートを生成し、それぞれにリスク・レベルを割り当てます。例:
  • 意図せずに開いたままになっているポートは、クラウド・リソースへの潜在的な攻撃ベクトルになったり、ハッカーが他の脆弱性を悪用するために使用する可能性があります。
  • 脆弱性に対処するために更新およびパッチが必要なOSパッケージ
  • ハッカーが悪用する可能性のあるOS構成
スキャンの概要を参照してください。

強化

本番デプロイメントのコンピュート・リソースを構成します。

インスタンスで実行されているLinuxおよびWindowsイメージのセキュリティ強化のベースラインを確立します。Oracle Linuxイメージのセキュリティ強化の詳細は、Oracle Linuxサーバーの強化のヒントを参照してください。Center for Internet Securityベンチマークは、LinuxおよびWindows Serverの各種ディストリビューションのオペレーティング・システム・セキュリティ強化ベンチマークの包括的なセットを提供します。

インスタンス・エントロピ

Linuxインスタンスでは、/dev/randomは非ブロックであり、乱数を必要とするセキュリティ・アプリケーションで使用する必要があります。

ベア・メタル・インスタンスもVMインスタンスも高品質で高スループット・エントロピ・ソースとなります。インスタンスには乱数ジェネレータがあり、その出力はオペレーティング・システムによって乱数の生成に使用されるエントロピ・プールに送られます。

次のコマンドを使用すると、アプリケーションで出力を使用する前に、/dev/randomによって生成された乱数のスループットと品質をチェックできます。

# check sources of entropy 
sudo rngd -v 
# enable rngd, if not already 
sudo systemctl start rngd 
# verify rngd status 
sudo systemctl status rngd 
# verify /dev/random throughput and quality using rngtest 
cat /dev/random | rngtest -c 1000

監査中

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

様々なセキュリティ関連イベントがログ・ファイルに取得されます。セキュリティ上の問題を検出するには、これらのログ・ファイルを定期的に確認することをお薦めします。Oracle Linuxでは、ログ・ファイルは/var/logフォルダにあります。次の表にセキュリティ関連のログ・ファイルの一部を示します。

ログ・ファイルまたはディレクトリ 説明
/var/log/secure Authは、失敗したサインインと成功したサインインを示します。
/var/log/audit Auditdは、発行されたシステム・コール、sudo試行、ユーザー・サインインなどを取得するログを記録します。ausearchおよびaureportは、auditdログの問合せに使用される2つのツールです。
/var/log/yum.log yumを使用してインスタンスにインストールまたは更新されたパッケージをリストします。
/var/log/cloud-init.log インスタンスの起動時に、cloud-initはユーザー提供のスクリプトを特権ユーザーとして実行できます。たとえば、cloud-initはSSHキーを導入できます。認識されないコマンドについては、cloud-initログを確認することをお薦めします。

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

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