CIS AWS Foundations Benchmark v2.0.0 の変更点

## はじめに
2023/6/28 にリリースされた CIS AWS Foundations Benchmark が v2.0.0 について、v1.5.0 からの変更内容をまとめました。

### CIS AWS Foundations Benchmark とは
米国の非営利団体である CIS (Center for Internet Secuirty) が公開している AWS アカウントの基本的なセキュリティを実装するための技術的なベストプラクティスです。

CIS は 各種 OS、サーバー、クラウド環境などを強化するためのガイドラインとして多数の CIS Benchmark を発行しており、PCI DSS などのコンプライアンス要件で業界標準のベストプラクティスとの記載があった場合などに参照されます。

CIS AWS Foundations Benchmark は CIS のサイトから PDF 形式でダウンロードできます。ライセンスは CC BY-NC-SA (Creative Commons Attribution-NonCommercial-ShareAlike) です。

https://www.cisecurity.org/benchmark/amazon_web_services

解説部分の記載は私見や所感などを含みますのでご注意ください。完全な変更内容は CIS AWS Foundations Benchmark v2.0.0 の PDF をご参照ください。

## 1 Identity and Access Management
### 新たに追加された項目
#### 1.22 Ensure access to AWSCloudShellFullAccess is restricted (Manual)
参考訳: AWSCloudShellFullAccess へのアクセスが制限されていることを確認する

AWS CloudShell は AWS マネジメントコンソールから起動可能なブラウザベースのシェル環境です。AWS 管理ポリシーの AWSCloudShellFullAccess を使用すると、ユーザーのローカル環境と CloudShell 環境の間でファイルのダウンロード/アップロードができます。

CloudShell 環境にアップロードされたデータはインターネットを経由して外部サーバー送信することも可能です。悪意のある操作によるデータ流出を避けるために、このようなポリシーの使用は避けるべきです。

ファイルのアップロードおよびダウンロードを拒否するポリシーの例:

https://docs.aws.amazon.com/cloudshell/latest/userguide/sec-auth-with-identities.html#restricting-actions

### 変更があった項目
#### 1.2 Ensure security contact information is registered (Manual)
参考訳: セキュリティコンタクト情報が登録されているか確認する

CLI での監査手順及び修復手順が追加されました。

#### 1.4 Ensure no 'root' user account access key exists (Automated)
参考訳: rootアカウントのアクセスキーが存在しないことを確認する

修復手順が修正されました。またアクセスキーを削除ではなく、非アクティブにした場合は監査手順で誤検知される可能性がある点について追記されています。
#### 1.6 Ensure hardware MFA is enabled for the 'root' user account (Manual)
参考訳: ハードウェア MFA がrootアカウントに対して有効であることを確認する

Assessment Status (評価ステータス) が Automated から Manual に変更されました。監査手順及び修復手順には変更ありません。

#### 1.7 Eliminate use of the 'root' user for administrative and daily tasks (Manual)
参考訳: 管理業務や日常業務でのルートユーザーの使用をなくす

Assessment Status (評価ステータス) が Automated から Manual に変更されました。監査手順及び修復手順には変更ありません。

#### 1.11 Do not setup access keys during initial user setup for all IAM users that have a console password (Manual)
参考訳: コンソールパスワードを持つすべてのIAMユーザーの初期ユーザーセットアップ中にアクセスキーをセットアップしない

Assessment Status (評価ステータス) が Automated から Manual に変更されました。監査手順及び修復手順には変更ありません。

#### 1.14 Ensure access keys are rotated every 90 days or less (Automated)
参考訳: アクセスキーが 90 日以内にローテーションされることを確認する

CLI の監査手順で `access_key_2_last_rotated` についても明記されました。

#### 1.15 Ensure IAM Users Receive Permissions Only Through Groups (Automated)
参考訳: IAM ユーザがグループを介してのみ許可を受けられるようにする

ユーザーにポリシーを定義する方法の説明に、4) インラインポリシーを持つ IAM グループにユーザーを追加する方法が追記されましたが、監査手順及び修復手順には変更ありません。

#### 1.17 Ensure a support role has been created to manage incidents with AWS Support (Automated)
参考訳: AWS サポートでインシデント管理をするためにサポートロールが作成されていることを確認する

AWS Support ロールに権限を割り当てる方法として、AWS 管理ポリシーの AWSSupportAccess を使用する以外の方法にも追加で触れられています。具体的には AdministatorAccess やカスタマー管理ポリシーなどによってもサポートへのアクセスが許可される場合があります。

監査手順及び修復手順には変更ありません。


#### 1.18 Ensure IAM instance roles are used for AWS resource access from instances (Automated)
参考訳: IAM インスタンスロールがインスタンスから AWS リソースにアクセスするために使われているか確認する

CLI での監査手順及び修復手順が追加されました。
合わせて Assessment Status (評価ステータス) が Manual から Automated に変更されました。

#### 1.20 Ensure that IAM Access analyzer is enabled for all regions(Automated)
参考訳: IAM アクセスアナライザーがすべてのリージョンで有効になっていることを確認する

設定対象がすべてのリージョンではなく、アクティブな全リージョンであることが明記されました。監査手順及び修復手順には変更ありません

## 2 Storage
### 削除された項目
※ v1.5.0 における項目番号です
#### 2.1.1 Ensure all S3 buckets employ encryption-at-rest (Automated)
参考訳: すべてのS3バケットに保存時の暗号化が採用されていることを確認する

2023/1/5 以降、デフォルトで全てのオブジェクトが暗号化されるようになったため、削除されたと思われます。

https://aws.amazon.com/jp/about-aws/whats-new/2023/01/amazon-s3-automatically-encrypts-new-objects/

### 変更があった項目
#### 2.1.2 Ensure MFA Delete is enabled on S3 buckets (Manual)
参考訳: S3バケットで MFA Delete を有効にしていることを確認する

Profile Applicability が Level 1 (standard security) から Level 2 (higher security) に変更になり、設定時の影響 (Impact) が追記されました。

Assessment Status (評価ステータス) が Automated から Manual に変更されました。監査手順及び修復手順には変更ありません。

#### 2.3.1 Ensure that encryption-at-rest is enabled for RDS Instances (Automated)
参考訳: RDS インスタンスで保管時の暗号化が有効になっていることを確認する

保管時の暗号化であることを明確にするために、タイトルが変更されました。
変更前: Ensure that encryption is enabled for RDS Instances
変更後: Ensure that encryption-at-rest is enabled for RDS Instances


## 3 Logging
### 変更があった項目
#### 3.3 Ensure the S3 bucket used to store CloudTrail logs is not publicly accessible (Automated)
参考訳: CloudTrail ログを保存するために使用される S3 バケットがパブリックにアクセス可能ではないことを確認する

監査手順と修復手順が修正されました。具体的には `aws:PrincipalOrgID` などの条件キーを使用していればPrincipal が `"*"` や `{"AWS": "*"}` に設定されていても適切にアクセス制御されているとみなされます。

#### 3.5 Ensure AWS Config is enabled in all regions (Automated)
参考訳: AWS Config がすべてのリージョンで有効であることを確認する

修復手順が修正されました。

## 4 Monitoring
### 変更があった項目
#### 全般的な表現の変更 (4.1～4.15)
4.1～4.15 について、AWS に依存しない表現に変更されています。具体的には CloudWatch によるモニタリングだけでなく、外部の SIEM 環境で監視を行うことも可能であるという表記になっています。

記載例:
> CloudWatch is an AWS native service that allows you to observe and monitor resources and applications. CloudTrail Logs can also be sent to an external Security information and event management (SIEM) environment for monitoring and alerting.

これに合わせて Assessment Status (評価ステータス) も Automated から Manual へ変更されています。

タイトルについても以下のように変更が入っています。

変更: Ensure a log metric filter and alarm exist for XXXXX
変更: Ensure XXXXX are monitored

#### 4.1 Ensure unauthorized API calls are monitored (Manual)
参考訳: 不正な API 呼び出しが監視されていることを確認する

メトリクスフィルターが修正されました。

```
"filterPattern": "{ ($.errorCode ="*UnauthorizedOperation") || ($.errorCode
="AccessDenied*") && ($.sourceIPAddress!="delivery.logs.amazonaws.com") &&
($.eventName!="HeadBucket") }",
```


#### 4.13 Ensure route table changes are monitored (Manual)
参考訳: ルートテーブルの変更が監視されていることを確認する

ルートテーブルの変更監視を行うことの必要性について、ネットワーク・トラフィックが制御不能になるような偶発的または意図的な変更を防ぐことが目的であることが追記されています。

監査手順及び修復手順には変更ありません。

#### 4.16 Ensure AWS Security Hub is enabled (Automated)
参考訳: AWS Security Hub が有効になっていることを確認する

CLI での監査手順が追加されました。


## 5 Networking
### 新たに追加された項目
#### 5.6 Ensure that EC2 Metadata Service only allows IMDSv2 (Automated)
参考訳: EC2 メタデータサービスが IMDSv2 のみを許可していることを確認する

IMDSv1 は EC2 インスタンスが SSRF (Server-Side Request Forger) 攻撃にさらされる可能性があるため、IMDSv2利用が推奨されます。

### 変更があった項目
#### 5.1 Ensure no Network ACLs allow ingress from 0.0.0.0/0 to remote server administration ports (Automated)
参考訳: ネットワーク ACL が 0.0.0.0/0 からリモートサーバー管理ポートへの侵入を許可しないようにする

監査対象として SSH (22)、RDP (3389) に加え、以下も含まれるようになりました。

* TCP (6): すべてのTCP
* UDP (17): すべての UDP
* ALL (-1): すべてのトラフィック

#### 5.2 Ensure no security groups allow ingress from 0.0.0.0/0 to remote server administration ports (Automated)
参考訳: セキュリティグループが 0.0.0.0.0/0 からリモートサーバー管理ポートへの侵入を許可しないようにする

監査対象として SSH (22)、RDP (3389) に加え、以下も含まれるようになりました。(5.1 と同様)

* TCP (6): すべてのTCP
* UDP (17): すべての UDP
* ALL (-1): すべてのトラフィック

## 過去バージョンの変更点まとめ記事
https://qiita.com/hayao_k/items/fed7c07c9f05c445ce1f

https://qiita.com/hayao_k/items/cd8a0589782b981cc442

https://qiita.com/hayao_k/items/81bd073c53b916993177

以上です。
参考になれば幸いです。