Upgrade to Pro — share decks privately, control downloads, hide ads and more …

IaCジャーニーの紹介

msato
December 15, 2023
1.3k

 IaCジャーニーの紹介

msato

December 15, 2023
Tweet

More Decks by msato

Transcript

  1. resource “my_profile” “this” { name = “佐藤雅樹” company = “クラスメソッド株式会社”

    department = “ソリューションアーキテクト” Interest = [ “CI/CD”, “IaC” ] } 2 自己紹介 2
  2. 8 Stage.2 IaC導入 ToDo • ツール選定(IaCツール、VCS)
 • 実行環境の整備(ローカル/リモート)
 • 既存リソースのImport


    • 各種フローの整備
 • ツールのチーム内への普及
 • ...etc
 
 ※太字部分を解説

  3. 9 Stage.2 IaC導入 ツール選定 • IaCツール: Terraform
 ◦ ツールの学習コストを抑えたい
 ◦

    AWS以外にも将来的に、別クラウドやSaaSも管理したい
 • VCS: GitLab
 ◦ アプリケーションチームがGitLabを使っていた

  4. 12 Stage.2 IaC導入 振り返り ✅ 解決できたこと
 ◦ IaCコードを再利用することで、リードタイム短縮
 ◦ コード化したことで、変更履歴がGitで確認できるように


    ◦ レビューがしやすくなり、作業ミス減少・品質向上
 ❌ 課題
 ◦ ローカルのAWS認証情報を使って、承認(レビュー)なしで、イン フラを変更できてしまう
 ◦ コマンドの手動実行ミス
 

  5. Pros - Terraformのデプロイに最適化されている - 少ない工数でデプロイパイプラインを構築可能 - ツール用のインフラの構築・運用が不要 - Stateファイルの管理機能等、その他機能も充実 -

    HashiCorp社のサポートを受けれる Cons - デフォルト設定では、VCS上でPlan等の実行結果が見れな い - その他の方法より料金が高い Terraform Cloud 16
  6. 18 Pros - アプリケーションのデプロイとツールを統一できる - ツール用のインフラの構築・運用が不要(SaaS製品の場合) Cons - パイプライン処理の作り込みが必要 -

    (Terraform CloudやAtlantisと比較して) - 環境の数が増えるとデプロイ設定用のファイルが増えて管 理が大変 CIツール(Github Actions, GitLab CI/CD)
  7. Stage.4 スキャン・テスト・ビルド 24 • 自動テストを導入する
 ◦ 静的解析
 ◦ プランテスト
 ◦

    ユニットテスト
 ◦ 統合テスト
 ◦ E2Eテスト
 • ...etc
 
 ※太字部分を解説
 
 

  8. 25 静的解析 terraform validate tflint Snyk IaC 説明 Terraformの組み込 みコマンド

    リンターツール セキュリティスキャ ンツール チェック対象 文法 プロバイダー (AWS,GCP,Azure) の特定の制約やエ ラー 例) AMIやインスタ ンスタイプの検証 作成されるリソース のセキュリティ 例) S3バケットが暗 号化されてない Terraformコードを解析する(実際のコード実行は無し)
 
 
 

  9. • TerraformのPlan結果を解析する
 • 静的解析との比較
 ◦ Pros
 - Planを実行するため、より踏み込んだ解析が可能
 ◦ Cons


    - プロバイダ(AWS,Azure, Google Cloud)の認証情報が必要
 • ポリシーの例
 ◦ 「ManagedBy = terraform」タグがついていないリソースのデプ ロイ禁止
 ◦ 金曜日にデプロイすることを禁止
 
 
 26 プランテスト
  10. 27 プランテスト Open Policy Agent (OPA) HashiCorp Sentinel Snyk IaC

    (内部でOPA利用) 対象 Terraform,Kubern etes,Envoy等 HashiCorp製品 (Terraform,Vault,N omad,Consul) Terraform,CloudF ormation,Kubernet es等 言語 Rego Sentinel Rego
  11. 選定したツール 28 • 静的解析: terraform validate,tflint, Snyk IaC
 ◦ 役割が異なるため、全て組み込む


    • プランテスト: Snyk IaC,OPA
 ◦ Terraform Cloudがサポートしているため組み込み易い
 ◦ KubernetesやEnvoyにも対象を広げていきたい
 ◦ Terraform Cloudでカスタムルールを使う場合、OPAの方が使 い回ししやすい
 
 
 

  12. 33 関連URL Terraform Cloud - https://developer.hashicorp.com/terraform/cloud-docs Snyk - https://snyk.io/jp/product/infrastructure-as-code-security/ Terraformのデプロイパイプラインに使用できるツールをまとめてみた

    - https://dev.classmethod.jp/articles/terraform-deploy-pipeline-tool/ Snyk IaCでTerraformコードのセキュリティ解析をしてみた - https://dev.classmethod.jp/articles/snyk-infrastructure-as-code-security-overvie w/ Terraform CloudのOPA Policy適用のチュートリアルをやってみた - https://dev.classmethod.jp/articles/terraform-cloud-opa-policy-tutorial/