Cloud Optixのガードレール機能で、パブリックなS3を自動的に修正する
Sophos Cloud Optixをご紹介します。Cloud Optixはパブリッククラウドを対象にしたエージェントレスのSaaS型サービスです。クラウド環境の可視化をできるほか、設定がコンプライアンスに沿っているか確認できます。今回はガードレール機能で特定のAWS設定を強制する方法を紹介します。
ガードレール機能とは
先日ご紹介したブログでは、Cloud OptixでAWS環境がポリシー通りに設定されているかをチェックし、問題が見つかったときに手で修正、抑制、Cloud Optixから修正する方法を案内しました。
以下の例はパブリックなS3をCloud Optixから修正する例です。
修正すると、"Principal"を「*」から「 "AWS": "arn:aws:iam::MyAWSAccountID:root"」に変更し、アカウント内からしかアクセスできなくなります。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PublicRead", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::MyAWSAccountID:root" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::bucket-name/*" } ] }
ガードレールを使うと、このような修正をCloud Optixで自動実行できます。
ガードレールを有効にしたポリシーを作る
S3のパプリックポリシーを許可しないガードレールを作ります。Cloud OptixのPoliciesから、AWSのカスタムポリシーを作ります。
Policy NameとCompliance Tagを指定します。今回はAWSGuardrailにしました。Compliance Tagはアラート画面でフィルタリングする際に使います。フィルターの名前のイメージです。
ポリシーを適用する環境を指定します。リソースタグを指定すると、タグがついたリソースだけをポリシーを適用する対象にできます。今回はリソースタグはなしとしました。
デフォルトでは全てのルールが有効になっているので、一旦すべてを無効にします。
「public read/list permission」で検索し、S3 publicに関するルールを表示します。ルールを有効にし、Guardrailも有効にします。
カスタムポリシーとして追加されます。
ガードレールに違反したリソースを作成する
パブリックなS3バケットを作成します。
デフォルトでは1時間に一度クラウド環境がスキャンされます。ブログを書くために一時間まつのは面倒なため、手動でスキャンを開始しました。
Slack連携している場合、publicである旨の通知がきます。
この時点でS3バケットを見ると、同じAWSのアカウント内のアクセスに制限されていました。Cloud Optixが自動で設定を修正したということです。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PublicRead", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::MyAWSAccountID:root" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::bucket-name/*" } ] }
Cloud Optixのアラート画面にはpublicなことが表示されています。次のスキャン時にアラートから消えました。
おわりに
Cloud Optixのガードレールを紹介しました。事前に作成したポリシーに違反する設定が行われたさいに、自動的に修正できます。特定のAWSアカウントでは、PublicなS3バケットの作成を一切認めたくないといったユースケースにハマると思います。