SlideShare ist ein Scribd-Unternehmen logo
1 von 13
AWS CloudFormation Guardで
遊んでみた
2020年08月05日
chocopurin
総関西サイバーセキュリティLT大会 #22
自己紹介
● 名前:chocopurin
● 主なお仕事
– だいぶ前:サーバ構築(J2EE・LAMP),認証ツール開発
– ちょっと前:開発ルールの策定,コンテナの研究,脆弱性診断
– 最近:セキュア開発基盤の整備,インフラ維持管理,AWS見習い
● 趣味・興味:書籍集め、レトロゲーム関連
● 最近の出没歴(順不同)
 IT技術書のオススメLT会、OWASP Kansai
 InfraStudy Meetup、総関西サイバーセキュリティLT大会
 Security-JAWS、AWSの基礎を学ぼう、大和セキュリティ etc
推しの一部
AWS CloudFormation(cFn)
AWS CloudFormation では、プログラミング言語またはシ
ンプルなテキストファイルを使用して、あらゆるリージョン
とアカウントでアプリケーションに必要とされるすべてのリ
ソースを、自動化された安全な方法でモデル化し、プロビ
ジョニングできます。
https://aws.amazon.com/jp/cloudformation/より抜粋
cFnテンプレート(JSONもしくはYAML)を食わせたら
インフラとかをいい感じに作ってくれるAWSの仕組み
AWS CloudFormation Guard
● 作成したcFnテンプレートがポリシーに合致しているか
を診断する、AWS製のオープンソースツール
– https://github.com/aws-cloudformation/cloudformation-guard
– https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/
UserGuide/best-practices.html
– https://www.infoq.com/jp/news/2020/07/cloudformation-guard/
● 下記3つで構成される
– CloudFormation Guard(cfnguard)
– CloudFormation Guard RuleGen(cfnguard-rulegen)
– CloudFormation Guard Lambda(cfnguard-lambda)
● 2020年8月現在プレビュー版(今後仕様変わるかも)
AWS CloudFormation Guard
● 動作イメージ
診断対象
テンプレート
ファイル
ルールセット
ファイル
CloudFormation
Guard
(cfnguard)
診断結果
ベース
テンプレート
ファイル
CloudFormation
Guard RuleGen
(cfnguard-rulegen)
Rustが動く環境
AWS CloudFormation Guard
● ルールセットの例(policy.rules)
AWS::EC2::Instance InstanceType == m1.small
AWS::EC2::SecurityGroup GroupDescription == allow connections from
specified CIDR ranges
AWS::EC2::SecurityGroup SecurityGroupIngress ==
[{"CidrIp":"0.0.0.0/0","FromPort":"80","IpProtocol":"tcp","ToPort":"80"},
{"CidrIp":"192.168.1.1/32","FromPort":"22","IpProtocol":"tcp","ToPort":"22"}]
AWS CloudFormation Guard
● 診断対象テンプレートの例(work.json)
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "AWS CloudFormation Sample Template for cfn-guard.",
"Resources": {
"EC2Instance": {
"Type": "AWS::EC2::Instance",
"Properties": {
"InstanceType": "t2.medium"
}
},
"ServerSecurityGroup": {
"Type": "AWS::EC2::SecurityGroup",
"Properties": {
"GroupDescription": "allow connections from specified CIDR ranges",
"SecurityGroupIngress": [
{
"IpProtocol": "tcp",
"FromPort": "80",
"ToPort": "80",
"CidrIp": "0.0.0.0/0"
},
{
"IpProtocol": "tcp",
"FromPort": "22",
"ToPort": "22",
"CidrIp": "10.1.0.0/16"
}
]
}
}
}
}
AWS CloudFormation Guard
● 診断実行の例
AWS CloudFormation Guard
● 診断実行の例
t2.mediumインスタンスを使おうとしており、ポリシー
「m1.smallインスタンスを利用するべし」
に反している。
SSHのアクセス元に10.1.0.0/16が指定されており、ポリシー
「SSHのアクセス元は192.168.1.1/32にするべし」
に反している
AWS CloudFormation Guard RuleGen
● ベーステンプレートの例(policy.json)
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "AWS CloudFormation Sample Template for cfn-guard.",
"Resources": {
"EC2Instance": {
"Type": "AWS::EC2::Instance",
"Properties": {
"InstanceType": "m1.small"
}
},
"ServerSecurityGroup": {
"Type": "AWS::EC2::SecurityGroup",
"Properties": {
"GroupDescription": "allow connections from specified CIDR ranges",
"SecurityGroupIngress": [
{
"IpProtocol": "tcp",
"FromPort": "80",
"ToPort": "80",
"CidrIp": "0.0.0.0/0"
},
{
"IpProtocol": "tcp",
"FromPort": "22",
"ToPort": "22",
"CidrIp": "192.168.1.1/32"
}
]
}
}
}
}
AWS CloudFormation Guard RuleGen
● ルールセット作成の例
まとめ
● cfnguardによって、ソースコード静的解析の感覚で
CloudFormationテンプレートを診断できる
● CI/CD連動を念頭に置いているだけあって、Rustとコ
マンドラインの環境さえあれば動作する
● ルールセット次第で診断品質が厳格にもザルにもなる
(下記がルールセット策定のインプットになりそう)
– BlackBeltや各種書籍記載のAWSベストプラクティス
– Well-Architected Framework
– 組織のセキュリティポリシー etc
● cfnguard-lambda追っかけないと・・・

Weitere ähnliche Inhalte

Was ist angesagt?

Java EE 7 multi factor authentiaction with Microsoft Azure AD
Java EE 7 multi factor authentiaction with Microsoft Azure ADJava EE 7 multi factor authentiaction with Microsoft Azure AD
Java EE 7 multi factor authentiaction with Microsoft Azure ADYoshio Terada
 
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?Kazumi IWANAGA
 
20190515 hccjp hybrid_strategy
20190515 hccjp hybrid_strategy20190515 hccjp hybrid_strategy
20190515 hccjp hybrid_strategyOsamu Takazoe
 
MTとAzure の素敵な関係@MTDDC Meetup Tohoku 2015
MTとAzure の素敵な関係@MTDDC Meetup Tohoku 2015MTとAzure の素敵な関係@MTDDC Meetup Tohoku 2015
MTとAzure の素敵な関係@MTDDC Meetup Tohoku 2015Masaki Takeda
 
世界はつながっている!VyOSで実現するマルチリージョン
世界はつながっている!VyOSで実現するマルチリージョン世界はつながっている!VyOSで実現するマルチリージョン
世界はつながっている!VyOSで実現するマルチリージョンMasamitsu Maehara
 
クラウドデザインパターンから始めるクラウドの利点と弱点の理解~提案から設計・開発・保守に活かす!~
クラウドデザインパターンから始めるクラウドの利点と弱点の理解~提案から設計・開発・保守に活かす!~クラウドデザインパターンから始めるクラウドの利点と弱点の理解~提案から設計・開発・保守に活かす!~
クラウドデザインパターンから始めるクラウドの利点と弱点の理解~提案から設計・開発・保守に活かす!~貴志 上坂
 
それでもボクはMicrosoft Azure を使う
それでもボクはMicrosoft Azure を使うそれでもボクはMicrosoft Azure を使う
それでもボクはMicrosoft Azure を使うMasaki Takeda
 
OpenWhiskを使ってみた
OpenWhiskを使ってみたOpenWhiskを使ってみた
OpenWhiskを使ってみたKozo Fukugauchi
 
[DO06] Infrastructure as Code でサービスを迅速にローンチし、継続的にインフラを変更しよう
[DO06] Infrastructure as Code でサービスを迅速にローンチし、継続的にインフラを変更しよう[DO06] Infrastructure as Code でサービスを迅速にローンチし、継続的にインフラを変更しよう
[DO06] Infrastructure as Code でサービスを迅速にローンチし、継続的にインフラを変更しようde:code 2017
 
インフラ野郎AzureチームProX
インフラ野郎AzureチームProXインフラ野郎AzureチームProX
インフラ野郎AzureチームProXToru Makabe
 
AWS移行に向けたクックパッドの取り組み+α
AWS移行に向けたクックパッドの取り組み+αAWS移行に向けたクックパッドの取り組み+α
AWS移行に向けたクックパッドの取り組み+αSugawara Genki
 
Hccjp PoC Introduction 2
Hccjp PoC Introduction 2Hccjp PoC Introduction 2
Hccjp PoC Introduction 2YusukeImanaka
 
20191209 hccjp azure-stackhub_overview
20191209 hccjp azure-stackhub_overview20191209 hccjp azure-stackhub_overview
20191209 hccjp azure-stackhub_overviewOsamu Takazoe
 
AWS S3への直接バックアップでコスト削減!データ保護のお悩みは『Druva Phoenix』で解決!
AWS S3への直接バックアップでコスト削減!データ保護のお悩みは『Druva Phoenix』で解決!AWS S3への直接バックアップでコスト削減!データ保護のお悩みは『Druva Phoenix』で解決!
AWS S3への直接バックアップでコスト削減!データ保護のお悩みは『Druva Phoenix』で解決!株式会社クライム
 
Cloud Computing(クラウド・コンピューティング)
Cloud Computing(クラウド・コンピューティング)Cloud Computing(クラウド・コンピューティング)
Cloud Computing(クラウド・コンピューティング)ripper0217
 
20190124_hccjp_recochoku_40m_pub
20190124_hccjp_recochoku_40m_pub20190124_hccjp_recochoku_40m_pub
20190124_hccjp_recochoku_40m_pubDai Fujikawa
 

Was ist angesagt? (20)

Java EE 7 multi factor authentiaction with Microsoft Azure AD
Java EE 7 multi factor authentiaction with Microsoft Azure ADJava EE 7 multi factor authentiaction with Microsoft Azure AD
Java EE 7 multi factor authentiaction with Microsoft Azure AD
 
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
 
[Japan Tech summit 2017] CLD 019
[Japan Tech summit 2017]  CLD 019[Japan Tech summit 2017]  CLD 019
[Japan Tech summit 2017] CLD 019
 
Azure aws違い
Azure aws違いAzure aws違い
Azure aws違い
 
20190515 hccjp hybrid_strategy
20190515 hccjp hybrid_strategy20190515 hccjp hybrid_strategy
20190515 hccjp hybrid_strategy
 
[Japan Tech summit 2017] DEP 005
[Japan Tech summit 2017] DEP 005[Japan Tech summit 2017] DEP 005
[Japan Tech summit 2017] DEP 005
 
MTとAzure の素敵な関係@MTDDC Meetup Tohoku 2015
MTとAzure の素敵な関係@MTDDC Meetup Tohoku 2015MTとAzure の素敵な関係@MTDDC Meetup Tohoku 2015
MTとAzure の素敵な関係@MTDDC Meetup Tohoku 2015
 
世界はつながっている!VyOSで実現するマルチリージョン
世界はつながっている!VyOSで実現するマルチリージョン世界はつながっている!VyOSで実現するマルチリージョン
世界はつながっている!VyOSで実現するマルチリージョン
 
クラウドデザインパターンから始めるクラウドの利点と弱点の理解~提案から設計・開発・保守に活かす!~
クラウドデザインパターンから始めるクラウドの利点と弱点の理解~提案から設計・開発・保守に活かす!~クラウドデザインパターンから始めるクラウドの利点と弱点の理解~提案から設計・開発・保守に活かす!~
クラウドデザインパターンから始めるクラウドの利点と弱点の理解~提案から設計・開発・保守に活かす!~
 
それでもボクはMicrosoft Azure を使う
それでもボクはMicrosoft Azure を使うそれでもボクはMicrosoft Azure を使う
それでもボクはMicrosoft Azure を使う
 
OpenWhiskを使ってみた
OpenWhiskを使ってみたOpenWhiskを使ってみた
OpenWhiskを使ってみた
 
[DO06] Infrastructure as Code でサービスを迅速にローンチし、継続的にインフラを変更しよう
[DO06] Infrastructure as Code でサービスを迅速にローンチし、継続的にインフラを変更しよう[DO06] Infrastructure as Code でサービスを迅速にローンチし、継続的にインフラを変更しよう
[DO06] Infrastructure as Code でサービスを迅速にローンチし、継続的にインフラを変更しよう
 
インフラ野郎AzureチームProX
インフラ野郎AzureチームProXインフラ野郎AzureチームProX
インフラ野郎AzureチームProX
 
AWS移行に向けたクックパッドの取り組み+α
AWS移行に向けたクックパッドの取り組み+αAWS移行に向けたクックパッドの取り組み+α
AWS移行に向けたクックパッドの取り組み+α
 
Hccjp PoC Introduction 2
Hccjp PoC Introduction 2Hccjp PoC Introduction 2
Hccjp PoC Introduction 2
 
20191209 hccjp azure-stackhub_overview
20191209 hccjp azure-stackhub_overview20191209 hccjp azure-stackhub_overview
20191209 hccjp azure-stackhub_overview
 
AWS S3への直接バックアップでコスト削減!データ保護のお悩みは『Druva Phoenix』で解決!
AWS S3への直接バックアップでコスト削減!データ保護のお悩みは『Druva Phoenix』で解決!AWS S3への直接バックアップでコスト削減!データ保護のお悩みは『Druva Phoenix』で解決!
AWS S3への直接バックアップでコスト削減!データ保護のお悩みは『Druva Phoenix』で解決!
 
Cloud Computing(クラウド・コンピューティング)
Cloud Computing(クラウド・コンピューティング)Cloud Computing(クラウド・コンピューティング)
Cloud Computing(クラウド・コンピューティング)
 
20190124_hccjp_recochoku_40m_pub
20190124_hccjp_recochoku_40m_pub20190124_hccjp_recochoku_40m_pub
20190124_hccjp_recochoku_40m_pub
 
[Japan Tech summit 2017] DEP 009
[Japan Tech summit 2017] DEP 009[Japan Tech summit 2017] DEP 009
[Japan Tech summit 2017] DEP 009
 

Ähnlich wie AWS CloudFormation Guardで遊んでみた

実践 bashによるサイバーセキュリティ対策を読んでみた(公開版)
実践 bashによるサイバーセキュリティ対策を読んでみた(公開版)実践 bashによるサイバーセキュリティ対策を読んでみた(公開版)
実践 bashによるサイバーセキュリティ対策を読んでみた(公開版)cluclu_land
 
Amazon Inspector v2で脆弱性管理を始めてみた
Amazon Inspector v2で脆弱性管理を始めてみたAmazon Inspector v2で脆弱性管理を始めてみた
Amazon Inspector v2で脆弱性管理を始めてみたcluclu_land
 
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)Masaya Tahara
 
20121221 AWS re:Invent 凱旋報告
20121221 AWS re:Invent 凱旋報告20121221 AWS re:Invent 凱旋報告
20121221 AWS re:Invent 凱旋報告真吾 吉田
 
Azure Antenna AI 概要
Azure Antenna AI 概要Azure Antenna AI 概要
Azure Antenna AI 概要Miho Yamamoto
 
今改めて学ぶ Microsoft Azure 基礎知識
今改めて学ぶ Microsoft Azure 基礎知識今改めて学ぶ Microsoft Azure 基礎知識
今改めて学ぶ Microsoft Azure 基礎知識Minoru Naito
 
[MW11] OSS on Azure で構築する ウェブアプリケーション
[MW11] OSS on Azure で構築する ウェブアプリケーション[MW11] OSS on Azure で構築する ウェブアプリケーション
[MW11] OSS on Azure で構築する ウェブアプリケーションde:code 2017
 
[日本DCの本命、大阪でWindows Azureを愛でる会] Windows Azure 概要 & 最新情報
[日本DCの本命、大阪でWindows Azureを愛でる会] Windows Azure 概要 & 最新情報[日本DCの本命、大阪でWindows Azureを愛でる会] Windows Azure 概要 & 最新情報
[日本DCの本命、大阪でWindows Azureを愛でる会] Windows Azure 概要 & 最新情報Naoki (Neo) SATO
 
S3 Client-Side Encryption by AWS SDK for Java/Ruby
S3 Client-Side Encryption by AWS SDK for Java/RubyS3 Client-Side Encryption by AWS SDK for Java/Ruby
S3 Client-Side Encryption by AWS SDK for Java/Ruby真吾 吉田
 
講演資料「Azure AI Update Ignite Fall 2021を振り返ろう!」
講演資料「Azure AI Update Ignite Fall 2021を振り返ろう!」講演資料「Azure AI Update Ignite Fall 2021を振り返ろう!」
講演資料「Azure AI Update Ignite Fall 2021を振り返ろう!」Kohei Ogawa
 
Microsoft Azure Update 20151112
Microsoft Azure Update 20151112Microsoft Azure Update 20151112
Microsoft Azure Update 20151112Ayako Omori
 
AWSクラウドデザインパターン - JEITA講演 -
AWSクラウドデザインパターン - JEITA講演 - AWSクラウドデザインパターン - JEITA講演 -
AWSクラウドデザインパターン - JEITA講演 - SORACOM, INC
 
AWSの最新動向と事例から知る クラウド利用の進化と真価
AWSの最新動向と事例から知る クラウド利用の進化と真価AWSの最新動向と事例から知る クラウド利用の進化と真価
AWSの最新動向と事例から知る クラウド利用の進化と真価Trainocate Japan, Ltd.
 
クラウドと共に進むエンジニアの進化
クラウドと共に進むエンジニアの進化クラウドと共に進むエンジニアの進化
クラウドと共に進むエンジニアの進化Trainocate Japan, Ltd.
 
20140621 july techfesta (JTF2014) 突発**むけAWS
20140621 july techfesta (JTF2014) 突発**むけAWS20140621 july techfesta (JTF2014) 突発**むけAWS
20140621 july techfesta (JTF2014) 突発**むけAWSYasuhiro Araki, Ph.D
 
試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShiftEtsuji Nakai
 
OSS on Azure で構築するウェブアプリケーション
OSS on Azure で構築するウェブアプリケーションOSS on Azure で構築するウェブアプリケーション
OSS on Azure で構築するウェブアプリケーションDaisuke Masubuchi
 
Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013Yasuhiro Horiuchi
 
これからのクラウドネイティブアプリケーションの話をしよう
これからのクラウドネイティブアプリケーションの話をしようこれからのクラウドネイティブアプリケーションの話をしよう
これからのクラウドネイティブアプリケーションの話をしよう真吾 吉田
 

Ähnlich wie AWS CloudFormation Guardで遊んでみた (20)

実践 bashによるサイバーセキュリティ対策を読んでみた(公開版)
実践 bashによるサイバーセキュリティ対策を読んでみた(公開版)実践 bashによるサイバーセキュリティ対策を読んでみた(公開版)
実践 bashによるサイバーセキュリティ対策を読んでみた(公開版)
 
Amazon Inspector v2で脆弱性管理を始めてみた
Amazon Inspector v2で脆弱性管理を始めてみたAmazon Inspector v2で脆弱性管理を始めてみた
Amazon Inspector v2で脆弱性管理を始めてみた
 
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
 
20121221 AWS re:Invent 凱旋報告
20121221 AWS re:Invent 凱旋報告20121221 AWS re:Invent 凱旋報告
20121221 AWS re:Invent 凱旋報告
 
Azure Antenna AI 概要
Azure Antenna AI 概要Azure Antenna AI 概要
Azure Antenna AI 概要
 
今改めて学ぶ Microsoft Azure 基礎知識
今改めて学ぶ Microsoft Azure 基礎知識今改めて学ぶ Microsoft Azure 基礎知識
今改めて学ぶ Microsoft Azure 基礎知識
 
[MW11] OSS on Azure で構築する ウェブアプリケーション
[MW11] OSS on Azure で構築する ウェブアプリケーション[MW11] OSS on Azure で構築する ウェブアプリケーション
[MW11] OSS on Azure で構築する ウェブアプリケーション
 
[日本DCの本命、大阪でWindows Azureを愛でる会] Windows Azure 概要 & 最新情報
[日本DCの本命、大阪でWindows Azureを愛でる会] Windows Azure 概要 & 最新情報[日本DCの本命、大阪でWindows Azureを愛でる会] Windows Azure 概要 & 最新情報
[日本DCの本命、大阪でWindows Azureを愛でる会] Windows Azure 概要 & 最新情報
 
S3 Client-Side Encryption by AWS SDK for Java/Ruby
S3 Client-Side Encryption by AWS SDK for Java/RubyS3 Client-Side Encryption by AWS SDK for Java/Ruby
S3 Client-Side Encryption by AWS SDK for Java/Ruby
 
PHP on Cloud
PHP on CloudPHP on Cloud
PHP on Cloud
 
講演資料「Azure AI Update Ignite Fall 2021を振り返ろう!」
講演資料「Azure AI Update Ignite Fall 2021を振り返ろう!」講演資料「Azure AI Update Ignite Fall 2021を振り返ろう!」
講演資料「Azure AI Update Ignite Fall 2021を振り返ろう!」
 
Microsoft Azure Update 20151112
Microsoft Azure Update 20151112Microsoft Azure Update 20151112
Microsoft Azure Update 20151112
 
AWSクラウドデザインパターン - JEITA講演 -
AWSクラウドデザインパターン - JEITA講演 - AWSクラウドデザインパターン - JEITA講演 -
AWSクラウドデザインパターン - JEITA講演 -
 
AWSの最新動向と事例から知る クラウド利用の進化と真価
AWSの最新動向と事例から知る クラウド利用の進化と真価AWSの最新動向と事例から知る クラウド利用の進化と真価
AWSの最新動向と事例から知る クラウド利用の進化と真価
 
クラウドと共に進むエンジニアの進化
クラウドと共に進むエンジニアの進化クラウドと共に進むエンジニアの進化
クラウドと共に進むエンジニアの進化
 
20140621 july techfesta (JTF2014) 突発**むけAWS
20140621 july techfesta (JTF2014) 突発**むけAWS20140621 july techfesta (JTF2014) 突発**むけAWS
20140621 july techfesta (JTF2014) 突発**むけAWS
 
試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift
 
OSS on Azure で構築するウェブアプリケーション
OSS on Azure で構築するウェブアプリケーションOSS on Azure で構築するウェブアプリケーション
OSS on Azure で構築するウェブアプリケーション
 
Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013
 
これからのクラウドネイティブアプリケーションの話をしよう
これからのクラウドネイティブアプリケーションの話をしようこれからのクラウドネイティブアプリケーションの話をしよう
これからのクラウドネイティブアプリケーションの話をしよう
 

Mehr von cluclu_land

レトロゲーム攻略本を読んで当時を振り返ってみた
レトロゲーム攻略本を読んで当時を振り返ってみたレトロゲーム攻略本を読んで当時を振り返ってみた
レトロゲーム攻略本を読んで当時を振り返ってみたcluclu_land
 
読書会やったらパーカーもらえた話
読書会やったらパーカーもらえた話読書会やったらパーカーもらえた話
読書会やったらパーカーもらえた話cluclu_land
 
作業用BGMに使っているレトロゲームサントラCDひたすら晒す(公開版)
作業用BGMに使っているレトロゲームサントラCDひたすら晒す(公開版)作業用BGMに使っているレトロゲームサントラCDひたすら晒す(公開版)
作業用BGMに使っているレトロゲームサントラCDひたすら晒す(公開版)cluclu_land
 
IT技術書のオススメLT会×Kobe #01
IT技術書のオススメLT会×Kobe #01IT技術書のオススメLT会×Kobe #01
IT技術書のオススメLT会×Kobe #01cluclu_land
 
マッスルタワーに挑んでみた(普及版)
マッスルタワーに挑んでみた(普及版)マッスルタワーに挑んでみた(普及版)
マッスルタワーに挑んでみた(普及版)cluclu_land
 
セキュリティの○○○を買ってみた
セキュリティの○○○を買ってみたセキュリティの○○○を買ってみた
セキュリティの○○○を買ってみたcluclu_land
 
Firefox OSアプリをタブレット端末で動かしてみた
Firefox OSアプリをタブレット端末で動かしてみたFirefox OSアプリをタブレット端末で動かしてみた
Firefox OSアプリをタブレット端末で動かしてみたcluclu_land
 

Mehr von cluclu_land (7)

レトロゲーム攻略本を読んで当時を振り返ってみた
レトロゲーム攻略本を読んで当時を振り返ってみたレトロゲーム攻略本を読んで当時を振り返ってみた
レトロゲーム攻略本を読んで当時を振り返ってみた
 
読書会やったらパーカーもらえた話
読書会やったらパーカーもらえた話読書会やったらパーカーもらえた話
読書会やったらパーカーもらえた話
 
作業用BGMに使っているレトロゲームサントラCDひたすら晒す(公開版)
作業用BGMに使っているレトロゲームサントラCDひたすら晒す(公開版)作業用BGMに使っているレトロゲームサントラCDひたすら晒す(公開版)
作業用BGMに使っているレトロゲームサントラCDひたすら晒す(公開版)
 
IT技術書のオススメLT会×Kobe #01
IT技術書のオススメLT会×Kobe #01IT技術書のオススメLT会×Kobe #01
IT技術書のオススメLT会×Kobe #01
 
マッスルタワーに挑んでみた(普及版)
マッスルタワーに挑んでみた(普及版)マッスルタワーに挑んでみた(普及版)
マッスルタワーに挑んでみた(普及版)
 
セキュリティの○○○を買ってみた
セキュリティの○○○を買ってみたセキュリティの○○○を買ってみた
セキュリティの○○○を買ってみた
 
Firefox OSアプリをタブレット端末で動かしてみた
Firefox OSアプリをタブレット端末で動かしてみたFirefox OSアプリをタブレット端末で動かしてみた
Firefox OSアプリをタブレット端末で動かしてみた
 

AWS CloudFormation Guardで遊んでみた

  • 2. 自己紹介 ● 名前:chocopurin ● 主なお仕事 – だいぶ前:サーバ構築(J2EE・LAMP),認証ツール開発 – ちょっと前:開発ルールの策定,コンテナの研究,脆弱性診断 – 最近:セキュア開発基盤の整備,インフラ維持管理,AWS見習い ● 趣味・興味:書籍集め、レトロゲーム関連 ● 最近の出没歴(順不同)  IT技術書のオススメLT会、OWASP Kansai  InfraStudy Meetup、総関西サイバーセキュリティLT大会  Security-JAWS、AWSの基礎を学ぼう、大和セキュリティ etc
  • 4. AWS CloudFormation(cFn) AWS CloudFormation では、プログラミング言語またはシ ンプルなテキストファイルを使用して、あらゆるリージョン とアカウントでアプリケーションに必要とされるすべてのリ ソースを、自動化された安全な方法でモデル化し、プロビ ジョニングできます。 https://aws.amazon.com/jp/cloudformation/より抜粋 cFnテンプレート(JSONもしくはYAML)を食わせたら インフラとかをいい感じに作ってくれるAWSの仕組み
  • 5. AWS CloudFormation Guard ● 作成したcFnテンプレートがポリシーに合致しているか を診断する、AWS製のオープンソースツール – https://github.com/aws-cloudformation/cloudformation-guard – https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/ UserGuide/best-practices.html – https://www.infoq.com/jp/news/2020/07/cloudformation-guard/ ● 下記3つで構成される – CloudFormation Guard(cfnguard) – CloudFormation Guard RuleGen(cfnguard-rulegen) – CloudFormation Guard Lambda(cfnguard-lambda) ● 2020年8月現在プレビュー版(今後仕様変わるかも)
  • 6. AWS CloudFormation Guard ● 動作イメージ 診断対象 テンプレート ファイル ルールセット ファイル CloudFormation Guard (cfnguard) 診断結果 ベース テンプレート ファイル CloudFormation Guard RuleGen (cfnguard-rulegen) Rustが動く環境
  • 7. AWS CloudFormation Guard ● ルールセットの例(policy.rules) AWS::EC2::Instance InstanceType == m1.small AWS::EC2::SecurityGroup GroupDescription == allow connections from specified CIDR ranges AWS::EC2::SecurityGroup SecurityGroupIngress == [{"CidrIp":"0.0.0.0/0","FromPort":"80","IpProtocol":"tcp","ToPort":"80"}, {"CidrIp":"192.168.1.1/32","FromPort":"22","IpProtocol":"tcp","ToPort":"22"}]
  • 8. AWS CloudFormation Guard ● 診断対象テンプレートの例(work.json) { "AWSTemplateFormatVersion": "2010-09-09", "Description": "AWS CloudFormation Sample Template for cfn-guard.", "Resources": { "EC2Instance": { "Type": "AWS::EC2::Instance", "Properties": { "InstanceType": "t2.medium" } }, "ServerSecurityGroup": { "Type": "AWS::EC2::SecurityGroup", "Properties": { "GroupDescription": "allow connections from specified CIDR ranges", "SecurityGroupIngress": [ { "IpProtocol": "tcp", "FromPort": "80", "ToPort": "80", "CidrIp": "0.0.0.0/0" }, { "IpProtocol": "tcp", "FromPort": "22", "ToPort": "22", "CidrIp": "10.1.0.0/16" } ] } } } }
  • 9. AWS CloudFormation Guard ● 診断実行の例
  • 10. AWS CloudFormation Guard ● 診断実行の例 t2.mediumインスタンスを使おうとしており、ポリシー 「m1.smallインスタンスを利用するべし」 に反している。 SSHのアクセス元に10.1.0.0/16が指定されており、ポリシー 「SSHのアクセス元は192.168.1.1/32にするべし」 に反している
  • 11. AWS CloudFormation Guard RuleGen ● ベーステンプレートの例(policy.json) { "AWSTemplateFormatVersion": "2010-09-09", "Description": "AWS CloudFormation Sample Template for cfn-guard.", "Resources": { "EC2Instance": { "Type": "AWS::EC2::Instance", "Properties": { "InstanceType": "m1.small" } }, "ServerSecurityGroup": { "Type": "AWS::EC2::SecurityGroup", "Properties": { "GroupDescription": "allow connections from specified CIDR ranges", "SecurityGroupIngress": [ { "IpProtocol": "tcp", "FromPort": "80", "ToPort": "80", "CidrIp": "0.0.0.0/0" }, { "IpProtocol": "tcp", "FromPort": "22", "ToPort": "22", "CidrIp": "192.168.1.1/32" } ] } } } }
  • 12. AWS CloudFormation Guard RuleGen ● ルールセット作成の例
  • 13. まとめ ● cfnguardによって、ソースコード静的解析の感覚で CloudFormationテンプレートを診断できる ● CI/CD連動を念頭に置いているだけあって、Rustとコ マンドラインの環境さえあれば動作する ● ルールセット次第で診断品質が厳格にもザルにもなる (下記がルールセット策定のインプットになりそう) – BlackBeltや各種書籍記載のAWSベストプラクティス – Well-Architected Framework – 組織のセキュリティポリシー etc ● cfnguard-lambda追っかけないと・・・