APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

S3周りのAWS Configマネージドルールについて考えてみる

こんにちは。クラウド事業部の菅家です。

前回AWS Configを試したところでルールの対象となるサービスやルールの把握が大事ではという結論に至ったところ。 まずはもっといろんなルールを知って使えるようになりたいと思った次第です。

【前回】 techblog.ap-com.co.jp

そこで、今回はAWS側でもともと用意されているマネージドルールの内容をS3に絞って読んでいこうかなと思っています。

手探り感満載ですが、使って慣れていけるようにがんばるぞ~!
今回本当に手探りゆえ、特定の技術に対してやり方紹介というよりは、体験記的な観点が多いのであしからず。

目次としては以下の通り。



確認するルールを選ぶ

ルール一覧を見てみる

公式ドキュメント:マネジメントルール一覧 docs.aws.amazon.com

ルールを絞る

S3周りのルールの抜き出し

各ルールの内容を把握していないため、公式のマネジメントルール一覧より、まずは単純に頭文字が「s3」となるものを抜き出しました。
名前にS3とついているので、何かしらS3には関連しているでしょう。

  1. s3-account-level-public-access-blocks
  2. s3-account-level-public-access-blocks-periodic
  3. s3-bucket-acl-prohibited
  4. s3-bucket-blacklisted-actions-prohibited
  5. s3-bucket-default-lock-enabled
  6. s3-bucket-level-public-access-prohibited
  7. s3-bucket-logging-enabled
  8. s3-bucket-policy-grantee-check
  9. s3-bucket-policy-not-more-permissive
  10. s3-bucket-public-read-prohibited ⇒前回お試ししたものはこの子
  11. s3-bucket-public-write-prohibited
  12. s3-bucket-replication-enabled
  13. s3-bucket-server-side-encryption-enabled
  14. s3-bucket-ssl-requests-only
  15. s3-bucket-versioning-enabled
  16. s3-default-encryption-kms
  17. s3-event-notifications-enabled
  18. s3-last-backup-recovery-point-created
  19. s3-lifecycle-policy-check
  20. s3-resources-protected-by-backup-plan
  21. 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個となりました。

  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

1. s3-bucket-acl-prohibited

docs.aws.amazon.com

検知された状況はs3-bucket-public-read-prohibitedと同じになりました。
writeは設定できなかったので、検証できなかったのですが感覚として以下になりそうです。
s3-bucket-public-read-prohibited + s3-bucket-public-write-prohibited

単純にACLを有効にしただけでは非準拠とならず、
アクセスコントロールリスト (ACL)の設定で全員(パブリックアクセス)に対して許可したところ非準拠となりました。

2. s3-bucket-blacklisted-actions-prohibited

docs.aws.amazon.com

S3バケットポリシーに関連するもの。

docs.aws.amazon.com

ACLとの違いに関してはこれはこれで結構記事が書けそうなので、次の課題でしょうか。
対人、バケット、オブジェクト、アクセス対象がありそうです。

Amazon S3 バケットポリシーを使用すると、バケット内のオブジェクトへのアクセスを保護して、適切な権限を持つユーザーだけがアクセスできるようにすることができます。適切な権限を持たない認証済みユーザーが Amazon S3 リソースにアクセスできないようにすることもできます。

バケットポリシーの例 - Amazon Simple Storage Service

バケットポリシー設定が一筋縄ではいかなかったので、概要のみ。
オブジェクトに対してGet、Deleteの操作観点で見るルールのようです。

3. s3-bucket-default-lock-enabled

docs.aws.amazon.com

バケットのロックで調べると「オブジェクトロック」が出てきました。
どうやらS3に格納しているオブジェクトに対してのロックのようです。
プロパティ⇒オブジェクトロックで設定変更できそうだったのですが、検証環境では許可されておらず検証できませんでした。

docs.aws.amazon.com

4. s3-bucket-level-public-access-prohibited

docs.aws.amazon.com

S3の設定上ではパブリックアクセスのブロックのチェックを外すと非準拠になりました。

5. s3-bucket-logging-enabled

docs.aws.amazon.com

おそらく「プロパティ>サーバーアクセスのログ記録」の設定でいけそう。 説明を読むにバケットに対する操作の記録を許可しているかというところになる。

6. s3-bucket-policy-grantee-check

docs.aws.amazon.com

概要のみ。

7. s3-bucket-policy-not-more-permissive

docs.aws.amazon.com

概要のみ。

8. s3-bucket-public-read-prohibited

スキップ。前回記事を参照。

9. s3-bucket-public-write-prohibited

スキップ。前回記事を参照。

10. s3-bucket-replication-enabled

docs.aws.amazon.com

別途学習が要るため概要のみ。
レプリケーションとはレプリカ、複製品を作る機能で、DBなどにもあるものです。
バックアップとはすぐに使えるかどうかという意味合いで違って、レプリケーションは本体が使えなかった場合に使えるサブ機の様な所になります。
S3では「管理>レプリケーションルール」にて設定します。オブジェクトに対してルールの適用範囲を設定することで実装できるようです。

11. s3-bucket-server-side-encryption-enabled

docs.aws.amazon.com

別途学習が要るので概要のみ。
設定自体は「プロパティ>デフォルトの暗号化」で対応できそうです。

12. s3-bucket-ssl-requests-only

docs.aws.amazon.com

SSLなのでHTTPSリクエストのみ許可しているかというところですね。
バケットポリシー関連なので、今回スキップ。
aws:SecureTransportの条件で設定できることはわかりました。

13. s3-bucket-versioning-enabled

docs.aws.amazon.com

「プロパティ>バケットのバージョニング」にて対応。
DBなどと同じくバージョン管理が有効になっているかどうかのルールです。

感想

正直、知識不足で今回ちょっと消化不良。
ただ、ざっくり読んでみて、収穫が無かったというわけではなく。
AWS Configってなんだよ~という感じで、広いところにぽーんと放り出されていたところが若干方針が見えてきた感じというか、
結局どういった設定がS3のAWS Configのルールで監視されているのか?というところがミソだなというところを感じました。
で、S3のセキュリティの観点が、ACL、S3バケットポリシーなどアクセス許可系なんだろうなと。
アクセス許可がさらに人、バケット、オブジェクトの3点で考えるとよさそうというところも。
S3周りでこういうAWS Configのルールがあればいいんじゃないという提案の足掛かりを得たというところで〆させていただきます。