Cloud OptixによるCloudFormationテンプレートのセキュリティチェック

Cloud OptixによるGithubに登録されたCloudFormationテンプレートのセキュリティチェックを紹介します。
2020.07.10

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

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のSlackインテグレーション

おわりに

Cloud OptixのCloudFormationテンプレートのセキュリティチェックを紹介しました。テンプレートをデプロイするまえにスキャンすることで、安全なクウラド設定を維持できるかと思います。

参考