こんにちは。クラウド事業部の菅家です。
前回AWS Configを試したところでルールの対象となるサービスやルールの把握が大事ではという結論に至ったところ。 まずはもっといろんなルールを知って使えるようになりたいと思った次第です。
そこで、今回はAWS側でもともと用意されているマネージドルールの内容をS3に絞って読んでいこうかなと思っています。
手探り感満載ですが、使って慣れていけるようにがんばるぞ~!
今回本当に手探りゆえ、特定の技術に対してやり方紹介というよりは、体験記的な観点が多いのであしからず。
目次としては以下の通り。
- 確認するルールを選ぶ
- 検証してみる
- 1. s3-bucket-acl-prohibited
- 2. s3-bucket-blacklisted-actions-prohibited
- 3. s3-bucket-default-lock-enabled
- 4. s3-bucket-level-public-access-prohibited
- 5. s3-bucket-logging-enabled
- 6. s3-bucket-policy-grantee-check
- 7. s3-bucket-policy-not-more-permissive
- 8. s3-bucket-public-read-prohibited
- 9. s3-bucket-public-write-prohibited
- 10. s3-bucket-replication-enabled
- 11. s3-bucket-server-side-encryption-enabled
- 12. s3-bucket-ssl-requests-only
- 13. s3-bucket-versioning-enabled
- 感想
確認するルールを選ぶ
ルール一覧を見てみる
公式ドキュメント:マネジメントルール一覧 docs.aws.amazon.com
ルールを絞る
S3周りのルールの抜き出し
各ルールの内容を把握していないため、公式のマネジメントルール一覧より、まずは単純に頭文字が「s3」となるものを抜き出しました。
名前にS3とついているので、何かしらS3には関連しているでしょう。
- s3-account-level-public-access-blocks
- s3-account-level-public-access-blocks-periodic
- s3-bucket-acl-prohibited
- s3-bucket-blacklisted-actions-prohibited
- s3-bucket-default-lock-enabled
- s3-bucket-level-public-access-prohibited
- s3-bucket-logging-enabled
- s3-bucket-policy-grantee-check
- s3-bucket-policy-not-more-permissive
- s3-bucket-public-read-prohibited ⇒前回お試ししたものはこの子
- s3-bucket-public-write-prohibited
- s3-bucket-replication-enabled
- s3-bucket-server-side-encryption-enabled
- s3-bucket-ssl-requests-only
- s3-bucket-versioning-enabled
- s3-default-encryption-kms
- s3-event-notifications-enabled
- s3-last-backup-recovery-point-created
- s3-lifecycle-policy-check
- s3-resources-protected-by-backup-plan
- s3-version-lifecycle-policy-check
21個ありました。ちょっと多い。
S3周りのルールから理解しやすそうなもの、今後動作確認しやすそうなものに絞る
次にルールの名前や内容を確認し、検証できそうなものを探ってみます。
s3後の文字で名前が重複するものがあったのでこの辺絞れそうだなという感じ。
s3-account
対象の設定が「アカウントレベルから設定されているかどうか」というようなルールになります。
試そうと調べてみましたが、S3全体の設定を変更する必要があるため、私以外が作成したS3バケットもある以上、
安易に変更して準拠非準拠を確認するのはできないと判断しました。無念。
s3-bucket
主語が「Amazon Simple Storage Service (Amazon S3) バケットが」となっているルールとなります。
S3全体ではなく、S3の各リソースに関しての設定に対してルールを紐づける模様。前回お試ししたのもこちらになります。
ルールを試すという点でも、こちらがよさそうです。
その他
「S3バケットが」が主語になっているが、ルール名がs3-bucketで始まらない。
命名規則的になぜこうなっているのか、調べてもわからなかったため今回はスキップ。
気になる。
検証してみる
そんなところで絞ったのがs3-bucketで始まる以下の13個。
8,9については、前回のお試しでやり方は試したのでスキップして11個となりました。
- s3-bucket-acl-prohibited
- s3-bucket-blacklisted-actions-prohibited:スキップ
- s3-bucket-default-lock-enabled
- s3-bucket-level-public-access-prohibited
- s3-bucket-logging-enabled
- s3-bucket-policy-grantee-check
- s3-bucket-policy-not-more-permissive
- s3-bucket-public-read-prohibited:スキップ
- s3-bucket-public-write-prohibited:スキップ
- s3-bucket-replication-enabled
- s3-bucket-server-side-encryption-enabled
- s3-bucket-ssl-requests-only
- s3-bucket-versioning-enabled
1. s3-bucket-acl-prohibited
検知された状況はs3-bucket-public-read-prohibitedと同じになりました。
writeは設定できなかったので、検証できなかったのですが感覚として以下になりそうです。
s3-bucket-public-read-prohibited + s3-bucket-public-write-prohibited
単純にACLを有効にしただけでは非準拠とならず、
アクセスコントロールリスト (ACL)の設定で全員(パブリックアクセス)に対して許可したところ非準拠となりました。
2. s3-bucket-blacklisted-actions-prohibited
S3バケットポリシーに関連するもの。
ACLとの違いに関してはこれはこれで結構記事が書けそうなので、次の課題でしょうか。
対人、バケット、オブジェクト、アクセス対象がありそうです。
Amazon S3 バケットポリシーを使用すると、バケット内のオブジェクトへのアクセスを保護して、適切な権限を持つユーザーだけがアクセスできるようにすることができます。適切な権限を持たない認証済みユーザーが Amazon S3 リソースにアクセスできないようにすることもできます。
バケットポリシーの例 - Amazon Simple Storage Service
バケットポリシー設定が一筋縄ではいかなかったので、概要のみ。
オブジェクトに対してGet、Deleteの操作観点で見るルールのようです。
3. s3-bucket-default-lock-enabled
バケットのロックで調べると「オブジェクトロック」が出てきました。
どうやらS3に格納しているオブジェクトに対してのロックのようです。
プロパティ⇒オブジェクトロックで設定変更できそうだったのですが、検証環境では許可されておらず検証できませんでした。
4. s3-bucket-level-public-access-prohibited
S3の設定上ではパブリックアクセスのブロックのチェックを外すと非準拠になりました。
5. s3-bucket-logging-enabled
おそらく「プロパティ>サーバーアクセスのログ記録」の設定でいけそう。 説明を読むにバケットに対する操作の記録を許可しているかというところになる。
6. s3-bucket-policy-grantee-check
概要のみ。
7. s3-bucket-policy-not-more-permissive
概要のみ。
8. s3-bucket-public-read-prohibited
スキップ。前回記事を参照。
9. s3-bucket-public-write-prohibited
スキップ。前回記事を参照。
10. s3-bucket-replication-enabled
別途学習が要るため概要のみ。
レプリケーションとはレプリカ、複製品を作る機能で、DBなどにもあるものです。
バックアップとはすぐに使えるかどうかという意味合いで違って、レプリケーションは本体が使えなかった場合に使えるサブ機の様な所になります。
S3では「管理>レプリケーションルール」にて設定します。オブジェクトに対してルールの適用範囲を設定することで実装できるようです。
11. s3-bucket-server-side-encryption-enabled
別途学習が要るので概要のみ。
設定自体は「プロパティ>デフォルトの暗号化」で対応できそうです。
12. s3-bucket-ssl-requests-only
SSLなのでHTTPSリクエストのみ許可しているかというところですね。
バケットポリシー関連なので、今回スキップ。
aws:SecureTransportの条件で設定できることはわかりました。
13. s3-bucket-versioning-enabled
「プロパティ>バケットのバージョニング」にて対応。
DBなどと同じくバージョン管理が有効になっているかどうかのルールです。
感想
正直、知識不足で今回ちょっと消化不良。
ただ、ざっくり読んでみて、収穫が無かったというわけではなく。
AWS Configってなんだよ~という感じで、広いところにぽーんと放り出されていたところが若干方針が見えてきた感じというか、
結局どういった設定がS3のAWS Configのルールで監視されているのか?というところがミソだなというところを感じました。
で、S3のセキュリティの観点が、ACL、S3バケットポリシーなどアクセス許可系なんだろうなと。
アクセス許可がさらに人、バケット、オブジェクトの3点で考えるとよさそうというところも。
S3周りでこういうAWS Configのルールがあればいいんじゃないという提案の足掛かりを得たというところで〆させていただきます。