Oracle Cloud Infrastructure(OCI)におけるセキュリティ

# はじめに
こちらの記事は [Oracle Cloud Infrastructure Advent Calendar 2020](https://qiita.com/advent-calendar/2020/oci) Day 8 の記事として書かれています。

OCIにおけるセキュリティってどう考えればよいの？を他のパブリッククラウドと比較しつつ書き留めていきます。

## そもそもセキュリティとは
セキュリティは、次の三要素が存在する場合に必要になります。

 1. 守るべき資産
 2. それを脅かす脅威
 3. 脅威が突いてくる脆弱性

我々 Information Technology(IT) エンジニアが扱い、守るべき資産は、情報です。

## 情報セキュリティの特性
ISMS(情報セキュリティマネジメントシステム) の認証基準 [ISO/IEC 27002 Information technology -- Security techniques -- Code of practice for information security management](https://www.iso.org/standard/54533.html) では、以下のように定めています。

- 情報セキュリティ(Information Security)とは、情報の以下を維持すること。
 - 機密性 (Confidentiality)
 - 完全性 (Integrity)
 - 可用性 (Availability)

- 更に、情報に以下のような特性を含めることがきること。
 - 真正性 (Authenticity)
 - 責任追跡性 (Accountability)
 - 否認防止 (Non-Repudiation)
 - 信頼性 (Reliability)

機密性に焦点が当たりがちで、可用性などは別に切り出されることが多いですが、いずれも情報資産を守るために必要な特性です。

## クラウドのセキュリティ
オンプレミスとクラウドでは、守るべき資産は変わりませんが、その管理主体・アクセス経路・外部接続点の違いから脅威と脆弱性は異なってきます。

- オンプレミス：利用者が管理し、物理的に閉じたネットワークでアクセスが限定され、外部接続点は専任チーム担当で統制されることが多い
- クラウド：提供者が管理し、世界中どこからでもアクセスでき、**利用者の権限・設定次第**で外部接続点はフルオープンになる

オンプレミス環境では物理ネットワーク内にいる者はなりすましが困難なため、脅威ではない信頼された存在として扱われてきました。クラウド環境ではインターネット上にいるモノを物理的に信頼できる存在と証明するのは困難です。そのため、セキュリティの考え方・役割分担も自ずと変わってきます。

## クラウドのセキュリティ責任共有モデル
クラウドを利用する際のセキュリティの役割分担については、先人であるAWSでは責任共有モデルとして定めており、多くのクラウドでも同じモデルが採用されています。

- 提供者の責任：クラウド ’の’ セキュリティ(Security ‘of’ the Cloud)
- 利用者の責任：クラウド ’における’ セキュリティ(Security ‘in’ the cloud)
![AWSsharedResponsibility](https://d2908q01vomqb2.cloudfront.net/b3f0c7f6bb763af1be91d9e74eabfeb199dc1f1f/2020/05/13/Shared_Responsibility_Model_V2_JP.jpeg)
[出典：Amazon Web Services ブログ 責任共有モデルとは何か、を改めて考える]
(https://aws.amazon.com/jp/blogs/news/rethinksharedresponsibility/)

この責任共有モデルはセキュリティだけではなく、予算・調達・契約・精算・ガバナンスなどその他の分野にも及ぶ、クラウド利用の基本的な考え方です。

# OCIにおけるセキュリティ
では、OCIではどうでしょうか。

## 共同セキュリティ・モデル
OCIでは共同セキュリティ・モデルが設定されており、提供者であるOracleは基礎となるインフラストラクチャのセキュリティ対策を担当し、利用者であるユーザーは自分達のワークロードの保護と利用するサービスの安全な構成設定を担当します。
![OCIsharedResponsibility](https://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/671fbc0d-206a-47b4-9424-61ef5b5fb94e/Image/6649a4d2b32b41577bde9e116949ebd6/screen_shot_2019_01_10_at_3_19_34_pm.png)
具体的には以下のような領域となります。

- Identity and Access Management (IAM)
- ワークロード・セキュリティ
- データの分類とコンプライアンス
- ホスト・インフラストラクチャのセキュリティ
- ネットワーク・セキュリティ
- クライアントおよびエンドポイントの保護
- 物理セキュリティ

## 提供者のセキュリティ・アプローチ
### OCIは信頼できるのか？
責任を共有するには、利用するクラウドサービスが信頼できるか判断する必要があります。企業のセキュリティポリシーに合致するか、独自の質問票を用意するケースもありますが、クラウドサービス事業者と一問一答をやり取りするのは非常に労力・時間がかかります。
そこで、第三者基準の認証を取得しているかが、客観的な判断基準として活用できます。

- ISO27001
- ISO27017
- SOC2

OCIはいずれの第三者認証も取得しており、他のパブリッククラウドと同等の対応をしています。

### The 7 Pillars of a Trusted Enterprise Cloud Platform
クラウドサービス提供者として、OCIはセキュリティをどう考えているか？は、[セキュリティの概要](https://docs.cloud.oracle.com/ja-jp/iaas/Content/Security/Concepts/security_overview.htm) にて、以下7つの**柱**が定められています。~~あと2柱ほしい~~

　1. 顧客の分離
　2. データ暗号化
　3. セキュリティ制御
　4. 可視性
　5. セキュアなハイブリッド・クラウド
　6. 高可用性
　7. 検証可能なセキュア・インフラストラクチャ
![7Pillars](https://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/671fbc0d-206a-47b4-9424-61ef5b5fb94e/File/24f84270f1181b05f1ce38c41ecb6b71/screen_shot_2018_10_02_at_4_59_11_pm.png)

### セキュリティを実現するサービスおよび機能
OCIが提供するサービスには以下のようなものがあります。

- リージョンと可用性ドメイン
- Identity and Access Management (IAM)サービス
- セキュリティ・ゾーン・サービス
- 監査サービス
- コンピュート・サービス
- ネットワーキング・サービス
- ストレージ・サービス
- データベース・サービス
- ロード・バランシング・サービス
- 管理対象ドメイン・ネーム・サーバー(DNS)サービス
- ボールト・サービス
- セキュリティ・アドバイザ

各サービスごとに設定できる対策は様々ですが、大別すると以下です。
　1. ネットワークによるアクセス制御・境界線防御
　2. アイデンティティによる認証・認可
　3. 暗号化による保存データ・通信経路の保護
　4. 多重化・冗長化構成による可用性の向上
　5. バックアップ取得によるデータロストへの備え
　6. ロギング・モニタリングによる記録・監視
　7. 分析・レポーティングによる可視化・監査

利用者は利用するサービスごとに対策を行って多層防御を行い、脅威・障害に備え、利用状況に注視します。そのうえで、発生したインシデントに対応する体制・シナリオを用意することになります。

## 利用者のセキュリティ・ベストプラクティス
クラウドサービスの利用者として、我々が実施すべき具体的なセキュリティ対策は、[セキュリティのベストプラクティス](https://docs.cloud.oracle.com/ja-jp/iaas/Content/Security/Reference/configuration_security.htm#Security_Best_Practices) としてまとめられています。

　1. ユーザーの認証および認可
　2. ネットワーク・セキュリティ・アーキテクチャ
　3. コンピュート・インスタンスのセキュリティ構成
　4. データ・ストレージのセキュリティ構成

上記はOCI利用にあたってセキュリティを確保するためには必須の対策です。ぜひ一度目を通して、自環境の設定を確認してみてください。

# クラウドのセキュリティスタンダード
OCIが提供するセキュリティのサービス、利用者のベストプラクティスを整理しました。しかしこれでクラウドのセキュリティ対策として十分で、他のパブリッククラウドと比較して不足はないのでしょうか？セキュリティスタンダードとして横断的に判断できるフレームワークで測ってみます。

## 代表的なセキュリティフレームワーク
デファクトスタンダードとなっているセキュリティフレームワークには以下のようなものがあり、それぞれサイバー攻撃対策・内部不正対策、組織面・技術面の四象限で特長があります。

- NIST CSF：[米国立標準研究所(NIST)](https://www.nist.gov/)発行のCyber Security Framework
- CIS Controls：[米インターネットセキュリティセンター(CIS)](https://www.cisecurity.org/)発行の管理策
- ISMS：[JISQ27001(ISO/IEC27001)](https://isms.jp/isms.html)に基づいた情報セキュリティ管理の仕組み
- PCI DSS：[クレジットカード業界セキュリティ団体(PCI SSC](https://www.pcisecuritystandards.org/))発行の対策基準
![Flamework](https://www.nri-secure.co.jp/hs-fs/hubfs/blog_GRCP%E5%AF%84%E7%A8%BF/201904_NIST-CSF%EF%BC%88%E8%B6%B3%E7%AB%8B%EF%BC%89/NIST-CSF-Positioning2.png?width=1396&name=NIST-CSF-Positioning2.png)
[出典：NRIセキュア【解説】NIST サイバーセキュリティフレームワークの実践的な使い方](https://www.nri-secure.co.jp/blog/nist-cybersecurity-framework)

OCIを利用するうえでのセキュリティ・ベストプラクティスを判断するために、サイバー攻撃対策・具体的な技術面での対策に強いCISのリソースを活用します。

## Center for Internet Security(CIS)
CISは米国のNSA(国家安全保障局)、DISA(国防情報システム局)、NIST(国立標準技術研究所)などの政府機関と、企業、学術機関などが協力して、インターネット・セキュリティ標準化に取り組む団体です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440539/21b7ac37-9fa7-a299-0789-2882616e8ad4.png)

提供する主なリソースとして、以下があります。
- [CIS Controls](https://www.cisecurity.org/controls/)：サイバー攻撃に焦点を当てた具体的技術対策を示すフレームワーク
- [CIS Benchmarks](https://www.cisecurity.org/cis-benchmarks/)：セキュリティ推奨事項・設定値を記載したドキュメント

![CIS](https://www.cisecurity.org/wp-content/uploads/2020/06/cis-hardened-images-shared-responsibility-model-2020-0608.png)

## CIS Benchmarks の対象
[CIS Benchmarks](https://www.cisecurity.org/cis-benchmarks/)は、非常に広範囲な製品・サービスを対象とするドキュメント群です。パブリッククラウドの設定に関してはほぼ唯一の基準であり、デファクトスタンダートとなっています。
![Benchmark_Thumbnails.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440539/4834c5fe-9208-6ec1-013e-267867f3e658.png)

| カテゴリ                     | 対象の製品・サービス(例)        | 
|:-----------------------------|:---------------------------|
| Cloud Provider                      | Amazon Web Services, Microsoft Azure, Google Cloud Platform, IBM Cloud, **OCI** |
| Desktops & Web Browsers     　　　   | Apple Desktop OSX, Apple Safari Browser, Google Chrome, Microsoft Internet Explorer, Microsoft Windows Desktop 10/XP/NT, Mozilla Firefox Browser, Opera Browser, Mobile Devices, Zoom |
| Mobile Devices      　　　　       　| Apple Mobile Platform iOS, Google Mobile Platform |
| Network Devices       　　　　       | Agnostic Print Devices, Check Point Firewall, Cisco Firewall Devices, Cisco Routers/Switches IOS, Cisco Wireless LAN Controller, Juniper Routers/Switches JunOS, Palo Alto Networks |
| Server Software – Operating Systems | Amazon Linux, CentOS, Debian Linux Server, IBM AIX Server, Microsoft Windows Server, Novell Netware, Oracle Linux, Oracle Solaris Server, Red Hat Linux Server, Slackware Linux Server, SUSE Linux Enterprise Server, Ubuntu LTS Server |
| Server Software - Other    　　　　　| Apache HTTP Server, Apache Tomcat Server, BIND DNS Server, FreeRADIUS, Microsoft IIS Server, IBM DB2 Server, Microsoft Exchange, Microsoft SharePoint Server, Microsoft SQL Server, MIT Kerberos, MySQL Database Server, Novell eDirectory, OpenLDAP Server, Oracle Database Server, PostgreSQL Database Server, Sybase Database Server |
| Security Metrics       　　　        | Quick Start Guide, Security Metrics |
| Virtualization Platforms            | Agnostic VM Server, Docker, Kubernetes, VMware Server, Xen Server |
| Other                               | Microsoft Access, Microsoft Excel, Microsoft Office, Microsoft Outlook , Microsoft PowerPoint, Microsoft Word |

## CIS Benchmarks の定める項目と内容
CIS Benchmarks はドキュメント内で以下のように詳細な対策が記載されています。手順はコンソール操作およびCLIと具体的な出力結果が記載されており、システマティックに判断が可能です。

|項目 | 内容|
|--- | ---|
|推奨事項 | 対象を堅牢化するための具体的な運営・設定|
|評価ステータス | 自動化できるもの、手動で行うもの|
|プロファイル定義 | レベル1：基本的な対策、レベル2：拡張対策|
|説明 | 推奨事項の説明|
|論理的根拠 | 設定すべき理由|
|影響 | 設定する際に考慮すべき影響|
|監査 | 適切に設定されているかの確認する手順|
|修復 | 適切に設定するための手順|
|デフォルト値 | 関連する設定項目のデフォルト値|

![CISBenchmark.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440539/4998ebea-2c28-fea7-2226-063af82c2d5d.png)

※Docker-benchmarkや、Kube-benchなど、CIS Benchmarks を取り込んで設定状況を判定するツール等もOSSで公開されています。

## CIS Benchmarks の定めるセキュリティ対策
各パブリッククラウドの CIS Benchmarks は共通的な対策方針となっています。おおよそ以下のような章構成ですが、サービスの設定単位での対応となるため、構成や対策の粒度は異なります。

1. Identity and Access Management
2. Logging/Monitoring
3. Networking
4. VM/Storage/Database
5. Serverless
6. Security

| | OCI | AWS | Azure | GCP |
|--- | --- | --- | --- | --- |
|最新Version(2020/12時点) | 1.1.0 | 1.3.0 | 1.2.0 | 1.1.0 |
|初版発行 | 2020/8/6 | 2016/3/2 | 2018/2/20 | 2018/9/6 |
|最新更新 | 2020/11/9 | 2020/8/7 | 2020/11/1 | 2020/3/11 |
|Identity and Access Management | 12 | 22 | 23 | 15 |
|Logging & Monitoring | 17 | 11+15 | 5+8 | 11 |
|Networking | 5 | 4 | 6 | 9 |
|VM | - | - | 6 | 10 |
|Storage | 1 | 3 | 11 | 2 |
|Database | - | - | 22 | 15 |
|Serverless | - | - | 16 | 1 |
|Security & Management | 2 | - | 13 | - |
|合計 | 38 | 55 | 111 | 62 |

# OCI Benchmark
OCI Benchmark の各項目を見ていきます。

## Identity and Access Management

|項番 |推奨項目 |
|--- | ---|
|1.1 | 特定サービスでリソース管理するためのサービスレベル管理者を作成すること|
|1.2 | 全てのリソースに対する権限がテナント管理者グループにのみ与えられていること|
|1.3 | IAM管理者がテナント管理者グループを更新できないこと|
|1.4 | IAMパスワード・ポリシーで14文字以上のパスワード長を必要とすること|
|1.5 | IAMパスワード・ポリシーで少なくとも1つの大文字が必要であること|
|1.6 | IAMパスワード・ポリシーで少なくとも1つの小文字が必要であること|
|1.7 | IAMパスワード・ポリシーで少なくとも1つのシンボルが必要であること|
|1.8 | IAMパスワード・ポリシーで少なくとも1つの番号が必要であること|
|1.9 | IAMパスワード・ポリシーでパスワードが90日以内に期限切れになること|
|1.10 | IAMパスワード・ポリシーでパスワードの再使用を防止すること（24世代）|
|1.11 | コンソール・パスワードを使用して、すべてのユーザーに対してMFAが有効になっていること|
|1.12 | ユーザーAPIキーが90日以内に回転すること|
|1.13 | テナント管理者ユーザ用にAPIキーが作成されていないこと|

OCIのパスワードポリシーは優秀で、ほぼ全ての項目をデフォルトで満たしていますが、パスワード長だけは12文字で2文字足りませんでした。

## Logging/Monitoring
|項番 |推奨項目 |
|--- | ---|
|3.1 | Auditログの保存期間が365日に設定されていること|
|3.2 | リソースでデフォルトタグが使用されていること|
|3.3 | 監視アラートを受信するための通知トピックとサブスクリプションを少なくとも1つ作成|
|3.4 | アイデンティティ・プロバイダ　　の変更の通知が構成されていること|
|3.5 | IdPグループ・マッピング　　　　 の変更の通知が構成されていること|
|3.6 | IAMグループ　　　　　　　　　　の変更の通知が構成されていること|
|3.7 | IAMポリシー　　　　　　　　　　の変更の通知が構成されていること|
|3.8 | ユーザー　　　　　　　　　　　　の変更の通知が構成されていること|
|3.9 | VCN　　　　　　　　　　　　　　の変更の通知が構成されていること|
|3.10 | ルートテーブル　　　　　　　　　の変更の通知が構成されていること|
|3.11 | セキュリティ・リスト　　　　　　の変更の通知が構成されていること|
|3.12 | ネットワークセキュリティグループの変更の通知が構成されていること|
|3.13 | ネットワーク・ゲートウェイ　　　の変更の通知が構成されていること|

ログを取得して、設定変更は通知をして検知しましょう。
 - Auditのログ保存期間は設定上の最大値となります
 - ID/NWの個別サービス毎に変更通知を構成する必要がある

## Networking
|項番 |推奨項目 |
|--- | ---|
|2.1 | 0.0.0.0/0からポート22への入力を許可するセキュリティリストがないこと|
|2.2 | 0.0.0.0/0からポート3389への入力を許可するセキュリティリストがないこと|
|2.3 | 0.0.0.0/0からポート22への入力を許可するネットワークセキュリティグループがないこと|
|2.4 | 0.0.0.0/0からポート3389への入力を許可するネットワークセキュリティグループがないこと|
|2.5 | すべてのVCNのデフォルトセキュリティリストがICMPを除くすべてのトラフィックを制限すること|

インターネットAnyからのTCP/RDP通信を許可しない、ICMP以外はデフォルト許可しないという一般的なものです。

## VM/Storage/Database
|項番 |推奨項目 |
|--- | ---|
|4.1 | Object Storageバケットが公開されていないこと|
|4.2 | Object Storageバケットがカスタマーマネージドキー（CMK）で暗号化されていること|

まだObject Storageに関するものしかありません。インターネットに公開しないこと、利用者管理の暗号キーで暗号化することが求めれています。

## Security/Management
|項番 |推奨項目 |
|--- | ---|
|5.1 | クラウドリソースを保存するために、テナンシーに少なくとも1つのコンパートメントを作成する|
|5.2 | ルートコンパートメントにリソースが作成されていないこと|

OCI特有のコンパートメントを用いたAsset Managementの項目です。

## CIS Benchmarks を取り込んだサービス
以下のパブリッククラウドのサービスは、CIS Benchmarks を取り込み、項目を自動判定して結果をコンソール表示してくれます。OCIには2020/12時点ではまだこのような機能は存在しません。（要望済みですが）実装が待たれます。

- AWS Security Hub
- Azure Security Center
- GCP Security Health Analytics 

また、これらのパブリッククラウドの設定チェック＆保護サービスは、クラウドセキュリティポスチャ管理(CSPM: Cloud Security Posture Management)と呼ばれるソリューションが存在します。マルチクラウド対応しており、CIS Benchmarks 以外にもISOやPCI-DSS、NISTなどの基準に対応したサービスもあります。OCI対応をしているサービスはまだ少ないですが、CIS Benchmarks が発行されたことにより、対応が進むことが期待されます。

- Palo Alto PLISMA
- McAfee
- Trend Micro
- Symantec
- Aqua Wave
- Netskope
- Check Point Dome9 など

# まとめ
OCIは後発ながら、パブリッククラウドとして必要なセキュリティサービス、ベストプラクティス、および第三者機関・サードパーティーが提供する各種リソースがあります。これらを駆使して、セキュリティを確保した利用をしていきましょう。