Oracle Cloud Hangout Cafe Season4 #3「CI/CD 最新事情」(2021年6月9日開催)[2ページ目]

CI & GitOps

参考までにGitOps環境を構築する上で利用できる主なCIツールを例挙しておきます。CIOpsにおいても利用され続けているCIツールとGitOpsを組み合わせるケースとして主なツールは以下です。

KubernetesのCustomResourceとしてCIパイプラインをマニフェストで定義できるKubernetesネイティブなツールは以下です。

主なGitOpsツールは、以下です。

Argoには、Argo Workflows、Argo CD以外にもGitOpsの利便性を高めるツール群もあるので、同じファミリー(Argo Family)として組み合わせて利用できます。

こうしたツールを組み合わせることでGitOps環境を構築できます。

・CI & CD Security
ここでは、GitOpsにおいてパイプラインに組み込む、主なセキュリティ対策ナレッジを紹介します。 技術の進化に伴い様々なナレッジがありますので、あくまでも一例と捉えてください。

1. コンテナイメージビルド
コンテナイメージのビルドは、CIパイプラインに組み込む上でセキュアで高速であることが望ましいです。こうした要望に対応するビルドツールもいくつかあります。ここでは、BuildKitとKanikoを紹介します。

BuildKitは、Dockerfileの命令を並列実行、キャッシュ判定の仕組みで高速にビルドを実行します。そして、非Root / 非Privilegedな実行、DockerfileのRUN 命令を実行する際にseccomp*1を有効化する仕組みによってセキュアにビルドできます。

Kanikoは、OSやコンテナランタイムに依存せずにコンテナイメージをビルドする場合に有用です。コンテナ内のユーザ空間でビルドすることで、CIで推奨されるDooD*2でのRoot権限で稼働しているホスト上へのセキュリティリスクを回避できます。

*1:コンテナ内のプロセスが呼び出せるシステムコールを制限できるLinuxカーネルの機能
*2:Docker outside of Docker。起動したコンテナからホストのDockerデーモンでイメージビルドする方法

2. イメージスキャン
コンテナイメージもセキュアであることが望まれます。マネージドサービスのコンテナイメージレジストリに脆弱性検査機能が実装されていますが、CI時に脆弱性スキャンをかけて検査したコンテナイメージをレジストリにプッシュすることでセキュリティを高めることもできます。ここでは、Trivyとdockleを紹介します。

Trivyは、脆弱性データベースからコンテナイメージを診断します。診断結果をレポートとして出力できます。ワンバイナリでCIに組み込みやすいのも特徴です。

dockleは、CIS BenchmarkのDockerに関する項目、Dockerfileのベストプラクティスを基に検査できるツールです。そのため、Trivy では検知できない脆弱性を検査できます。

3. ポリシーチェック
Kubernetesのリソースは、マニフェストに定義して登録します。そのマニフェストの内容が正しいか、許可できるものかをチェックしてセキュリティを高める必要があります。

GitOpsではCI時にConftestというツールを利用してマニフェストをチェックできます。さらに、CD時にGatekeeperというツールを利用してKubernetesクラスタ登録時にチェックできます。その際、ポリシーチェックに利用するポリシーエンジンがOpen Policy Agentです。

ポリシーチェック

a. Open Policy Agent
Open Policy Agent(以降OPA)は、軽量で汎用性のあるポリシーエンジンで、YAMLやJSONのような構造化したデータのポリシーエンジンです。REGOという言語でポリシーを記述します。Kubernetesでは、ConftestやGatekeeperとの組み合わせで利用されることが多いです。

b. Conftest
Conftestでは、OPAのREGO言語で記述したポリシーに従ってマニフェストをチェックできます。下図は、マニフェストに「runAsNonRoot」が定義されていればOK、されていなければNGとしてチェックする例です。

Conftest

c. Gatekeeper
Gatekeeperは、Kubernetesの認証認可フローの拡張機能であるAdmission Controlから外部Webhookサーバとしてチェック依頼を受け、OPAの定義でチェックを行って登録の許可/拒否を返す仕組みです。

Gatekeeper

OPAと組み合わせて、ConftestでCI時にマニフェストのポリシーチェックを行い、GatekeeperでKubernetes登録時にポリシーチェックを行うことでセキュリティを高められます。

OPA/Conftest/Gatekeeper

ここで、発表時に含まれていなかった内容を追加します。Software Supply Cahinセキュリティの観点で、インテグリティ保護としてマニフェストに署名を持たせる取り組みがあります。2022年10月末に開催された「KubeCon + CloudNativeCon North America 2022」での発表です。

日々進化を続けているので、情報をキャッチアップする必要があります。

手元で始める GitOps

以下のツール及びサービスを利用したGitOps環境でデモを行いました。

・Continuous Integration
 - GitHub Actions
・Continuous Deliverty
 - Argo CD
・Kubernetes Cluster
 - Oracle Container Engine for Kubernetes (OKE)
・Container Registry
 - Oracle Cloud Infrastrucutre Registry (OCIR)

下図は、デモ構成です。

デモ構成

  1. ソースコード更新後、Codeリポジトリ(GitHub)にプッシュ(手動)
  2. GitHub Actionsによるビルド、コンテナイメージビルド、OCIRにコンテナイメージプッシュ
  3. GitHub ActionsによるOCIRへのコンテナイメージプッシュ
  4. GitHub ActionsによるConfigリポジトリ(GitHub)へのプルリクエスト
  5. GitHub ActionsによるConftest(ポリシーチェック)の実行
  6. プルリクエストをマージ(手動)
  7. Argo CDによるConfigリポジトリのポーリング
  8. Argo CDによる適用処理
  9. Gatekeeperによるポリシーチェック
  10. ブラウザによる確認(手動)

デモで使用したソースコードやマニフェストはochacafe-s4-3にあります。

この記事のキーワード :

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30