Cloud Optixのガードレール機能で、パブリックなS3を自動的に修正する

Cloud Optixのガードレール機能で、パブリックなS3を自動的に修正する方法を紹介します
2020.07.10

Sophos Cloud Optixをご紹介します。Cloud Optixはパブリッククラウドを対象にしたエージェントレスのSaaS型サービスです。クラウド環境の可視化をできるほか、設定がコンプライアンスに沿っているか確認できます。今回はガードレール機能で特定のAWS設定を強制する方法を紹介します。

ガードレール機能とは

先日ご紹介したブログでは、Cloud OptixでAWS環境がポリシー通りに設定されているかをチェックし、問題が見つかったときに手で修正、抑制、Cloud Optixから修正する方法を案内しました。

Cloud OptixによるAWS設定のアラート管理

以下の例はパブリックな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バケットの作成を一切認めたくないといったユースケースにハマると思います。