はじめに
この記事はGoogle Cloud Next Tokyo ’23で出てきたサービスについて見ていく記事です。
今回は最新 Google Cloud CI/CD を利用したソフトウェア デリバリーのセッションを視聴したのでセッションの内容を振り返りたいと思います。
登場したサービス
- Cloud Build(第二世代)
- Artifact Registry
- Cloud Deploy
セッションの要約
快適なCI/CD環境を提供することは組織のパフォーマンスにつながり、最終的には開発者のウェルビーイングにつながる。
※DORAのレポートを参照
従来までのCI/CD環境は自前でインスタンスを用意する必要があったため、下記のような問題が発生していた。
- 弾力性
- ポータビリティ
- メンテナンス性
ゆえに、モダンなCI/CDはポータビリティを意識した設計、弾力性、マネージドが必要である。
くわえて、セキュリティの面においてはソフトウェアサプライチェーンを意識する必要がある。
つまり、ソフトウェアサプライチェーンの保護である。
ソフトウェアサプライチェーンを保護する必要がある背景にはほぼすべての商用コードにOSSが利用されているということである。OSSは自社ではなく、一個人その他が開発しているものもあるため、そこには脆弱性がある。
多数の攻撃ベクトルからソフトウェアサプライチェーンを守るのは困難である。
Googleではソフトウェアサプライチェーンにセキュリティを加えたCIのことをS3C呼んでいる。
ソフトウェアサプライチェーンのセキュリティにはSLSAというセキュリティガイドラインがある。
SLSAは「Supply chain Levels for Software Artifacts」の省略形であり、ランクが存在する。
SLSAの主な役割としては下記のものがある。
- OSSセキュリティフレームワーク
- 内部フレームワークの可視化
- オープンガバナンス
SLSAのランクを高く保つことで来歴や透明性を担保できる。
※透明性:ソフトウェアの依存関係などソフトウェアを構成するものをどれだけ可視化できているかという性質のこと。SBOM(Software Bill of Materials)と呼ばれるソフトウェア部品の管理表を作ることでソフトウェアの依存関係を表現できます。
※来歴:ソフトウェアのアーティファクトがどこから来たものかを表現する情報
上記のSLSAやSBOM、ソフトウェアサプライチェーンのセキュリティについてはGoogle Cloudのサービスに含まれている。
具体的には下記の3つのサービスです。
- Cloud Build
- Binary Authorizationを利用したビルドとSLSAレベル3を提供
- Artifact Registry
- Artifact Analysisによるパッケージスキャン
- クリーンナップポリシーを設定することでイメージの削除と保持ができる
- Cloud Deploy
また、GitHubとCloud Buildを直接統合することでも可能のため、必要に応じてGitHubの利用も検討できる。
Cloud BuildはデフォルトでE2 スタンダードのマシンタイプに対応しており、月間2500ビルド分が無料である。
Cloud Deployはデプロイフックの利用が可能になった上に料金が改定されて以前よりも低価格で利用できるようになった。無償利用も拡大している。
くわえて、開発においてはクラウドIDEを活用することもできる。たとえば、Cloud Workstations(VSCodeのOSSやJetBrainsなどを使っている。マネージドの開発環境)を使うことで同一の環境をメンバーで共有できる。
また、CloudCodeを使うことでDuetAIも利用できる。(以下、Visual Studio Codeの画面)
まとめとしては下記のとおりです。
- マネージドなCI/CDを使う
- パイプラインに改ざん防止が導入されている
- 早い段階でセキュリティを組み込む
- パフォーマンスの高いパイプラインはビジネス効果とエンジニアの満足をもたらす
補足:Google Cloud DevOps
サービスを組みわせてDevOpsを実現する場合
感想
早い段階でセキュリティを組み込むという話はこちらのセッションでも説明されていましたのですぐに内容を理解することができました。
しかしながら、SLSAについては純粋に知らなかったため、勉強不足を痛感しました。
セッションを聞いて、Google CloudによるCI/CDパイプラインの構築に興味が湧いたのでやってみたいと思いました。とりわけ、他のクラウドでCI/CDに関する書籍を出していることもあるのでGoogle Cloudも同じように何らかの形でCI/CDのハンズオンを作りたいと思います。