Cloud OptixによるCloudFormationテンプレートのセキュリティチェック
Sophos Cloud Optixをご紹介します。Cloud Optixはパブリッククラウドを対象にしたエージェントレスのSaaS型サービスです。クラウド環境の可視化をできるほか、設定がコンプライアンスに沿っているか確認できます。今回はGithubに登録されたCloudFormationテンプレートのセキュリティチェックを紹介します。
CloudFormationテンプレートのセキュリティチェックとは?
CloudFormationテンプレートがポリシーに違反していないかをチェックします。CloudFormation関連では以下のポリシーが用意されています。
- IaC - Sophos Best Practices - Cloudformation
- IaC - Sophos Credentials Checker - CloudFormation
IaC環境の追加
Cloud OptixはIaCとして、Terraform, AWS CloudFormation, Ansible, Kubernetes,Azure Resource Manager (ARM) templateをスキャンできます。Cloud OptixのIaCリポジトリへのアクセス方法として、GitHub、Bitbucket、Jenkins、Cloud Optix APIを利用できます。
Cloud Optix>Environmentsから、Githubを開き「Connect to Github」を選びます。
Githubの画面にうつるので、Installを選びます。
インストールするオーガニゼイションとリポジトリを選びます。
リポジトリに変化がおきないと、pendingのステータスになります。WordPress_Single_Instance.jsonとい名前のテンプレートをpushしたところ、activeになりました。
テンプレートの内容ですが、セキュリティグループを意図的に0.0.0.0/0で許可しています。
"SecurityGroupIngress" : [ {"IpProtocol" : "tcp", "FromPort" : "22", "ToPort" : "22", "CidrIp" : "0.0.0.0/0"}, {"IpProtocol" : "tcp", "FromPort" : "3389", "ToPort" : "3389", "CidrIp" : "0.0.0.0/0"} ]
テンプレートのアラートを確認する
アラート画面には2つのアラートが出ていました。
「Ensure inbound public IP-address range in security-group is /24 or stricter」のアラートを開くと、コミットしたユーザ名やメールアドレス、ブランチ名、ファイル名などを確認できます。こちらのアラートが問題ない場合、ベルの抑制ボタンでアラート表示を消せます。
テンプレートを更新し、IPアドレスを/32で指定したところ、上記のアラートは消えました。
"SecurityGroupIngress" : [ {"IpProtocol" : "tcp", "FromPort" : "22", "ToPort" : "22", "CidrIp" : "10.0.0.1/32"}, {"IpProtocol" : "tcp", "FromPort" : "3389", "ToPort" : "3389", "CidrIp" : "10.0.0.1/32"} ]
テンプレートのレポートを確認する
Reportsを見ると、ポリシーの準拠状況を確認できます。「Sophos Credentials Checker - CloudFormation」の44項目中2つに違反。「Sophos Best Practices - Cloudformation」の24項目中2つに違反しています。
ポリシーを選ぶとポリシーの内容を確認できます。例えば、「Sophos Best Practices - Cloudformation」のNetwork Securityは以下の観点でチェックします。
- セキュリティグループのインバウンドについて、80/443を0.0.0.0/0で許可していないか
- セキュリティグループのインバウンドについて、SSHを0.0.0.0/0で許可していないか
- セキュリティグループのインバウンドについて、RDPを0.0.0.0/0で許可していないか
- セキュリティグループのインバウンドについて、IPレンジを/24以上で許可していないか
アラートを全て修正する必要はありません。必要がある設定については、理由を入力しSupperessすることでアラート画面から消していきます。
Slack連携
先日ご紹介したSlack連携を使えば、pushされたテンプレートのスキャンでアラートが見つかったときに通知できます。
おわりに
Cloud OptixのCloudFormationテンプレートのセキュリティチェックを紹介しました。テンプレートをデプロイするまえにスキャンすることで、安全なクウラド設定を維持できるかと思います。