シフトレフト セキュリティを実装する

Last reviewed 2025-02-05 UTC

Google Cloud Well-Architected Framework のセキュリティ ピラーにあるこの原則は、ソフトウェア開発ライフサイクルの早い段階で実装してセキュリティ対策を強化できる実用的な制御を特定するのに役立ちます。予防的なセキュリティ ガードレールとデプロイ後のセキュリティ管理の実装に役立つ推奨事項が提供されます。

原則の概要

シフトレフト セキュリティとは、ソフトウェア開発ライフサイクルの早い段階でセキュリティ プラクティスを採用することを意味します。この原則の目標は次のとおりです。

  • システムの変更前にセキュリティ上の欠陥を回避します。予防的なセキュリティ ガードレールを実装し、CI/CD パイプラインで Infrastructure as Code(IaC)、Policy as Code、セキュリティ チェックなどのプラクティスを採用します。 Google Cloudで、組織のポリシー サービス強化された GKE クラスタなど、他のプラットフォーム固有の機能も使用できます。
  • システムの変更が commit された後、セキュリティ バグを早期に、迅速かつ確実に検出して修正します。コードレビュー、デプロイ後の脆弱性スキャン、セキュリティ テストなどの手法を採用します。

セキュア・バイ・デザインの実装とシフトレフト セキュリティの原則は関連していますが、スコープが異なります。設計によるセキュリティの原則は、システム全体の再設計を必要とする根本的な設計上の欠陥を回避するのに役立ちます。たとえば、脅威モデリング演習で、現在の設計に認可ポリシーが含まれていないことが判明し、認可ポリシーがないとすべてのユーザーが同じレベルのアクセス権を持つことが判明しました。シフトレフト セキュリティは、変更を適用する前に実装上の欠陥(バグや構成ミス)を回避し、デプロイ後に迅速で信頼性の高い修正を可能にします。

推奨事項

クラウド ワークロードにシフトレフト セキュリティ原則を実装するには、次のセクションの推奨事項を検討してください。

予防的なセキュリティ管理を導入する

この推奨事項は、次の重点分野に関連しています。

  • ID とアクセスの管理
  • クラウドのガバナンス、リスク、コンプライアンス

クラウドで強固なセキュリティ対策を維持するには、予防的なセキュリティ管理が不可欠です。これらの制御により、リスクを事前に軽減できます。リソースの構成ミスと不正アクセスを防ぎ、デベロッパーが効率的に作業できるようにし、業界標準と内部ポリシーに準拠できます。

予防的なセキュリティ管理は、Infrastructure as Code(IaC)を使用して実装すると効果的です。IaC では、変更がデプロイされる前に、インフラストラクチャ コードに対するよりカスタマイズされたチェックを予防的なセキュリティ管理に含めることができます。自動化と組み合わせると、予防的なセキュリティ制御を CI/CD パイプラインの自動チェックの一部として実行できます。

次のプロダクトと機能は、環境に予防的コントロールを実装するのに役立ちます。 Google Cloud

IAM では、権限に基づいて特定のリソースを操作できるユーザーを承認できます。詳細については、IAM を使用した組織リソースのアクセス制御をご覧ください。

組織ポリシー サービスでは、リソースの制限を設定して構成方法を指定できます。たとえば、組織のポリシーを使用して次のことができます。

組織のポリシーを使用するだけでなく、次の方法でリソースへのアクセスを制限できます。

  • IAM を使用したタグ: 各リソースのアクセス権限を定義するのではなく、タグを一連のリソースに割り当て、タグ自体のアクセス定義を設定します。
  • IAM Conditions: リソースに対する条件付きの属性ベースのアクセス制御を定義します。
  • 多層防御: VPC Service Controls を使用して、リソースへのアクセスをさらに制限します。

リソース管理の詳細については、ランディング ゾーンのリソース階層を決定する Google Cloud をご覧ください。

クラウド リソースのプロビジョニングと管理を自動化する

この推奨事項は、次の重点分野に関連しています。

  • アプリケーションのセキュリティ
  • クラウドのガバナンス、リスク、コンプライアンス

クラウド リソースとワークロードのプロビジョニングと管理を自動化する場合は、命令型スクリプトではなく宣言型 IaC も採用すると効果的です。IaC は単独のセキュリティ ツールやプラクティスではありませんが、プラットフォームのセキュリティを強化するのに役立ちます。IaC を採用すると、再現可能なインフラストラクチャを作成でき、運用チームに既知の正常な状態を提供できます。IaC を使用すると、ロールバック、変更の監査、トラブルシューティングの効率も向上します。

IaC を CI/CD パイプラインと自動化と組み合わせることで、OPA などのツールを使用してポリシー as Code などのプラクティスを採用することもできます。インフラストラクチャの変更を経時的に監査し、変更をデプロイする前にインフラストラクチャ コードの自動チェックを実行できます。

インフラストラクチャのデプロイを自動化するには、Config Controller、Terraform、Jenkins、Cloud Build などのツールを使用できます。IaC と自動化を使用して安全なアプリケーション環境を構築できるように、Google Cloud にはエンタープライズ基盤のブループリントが用意されています。このブループリントは、Google の推奨プラクティスと構成に従った Google 独自の設計です。このブループリントには、Terraform と Cloud Build を使用して Google Cloud トポロジを構成してデプロイする手順が記載されています。

エンタープライズ基盤ブループリントのスクリプトを変更して、Google の推奨事項に沿って独自のセキュリティ要件を満たす環境を構成できます。追加のブループリントを使用してブループリントをさらに構築することも、独自の自動化を設計することもできます。Google Cloud アーキテクチャ センターには、エンタープライズ基盤ブループリント上に実装できる他のブループリントが用意されています。これらのブループリントの例を次に示します。

安全なアプリケーション リリースを自動化する

この推奨事項は、次の重点分野(アプリケーション セキュリティ)に関連しています。

自動化されたツールを使用しない場合、一貫したセキュリティ要件を満たすために、複雑なアプリケーション環境のデプロイ、更新、パッチの適用を行うことは容易なことではありません。ソフトウェア開発ライフサイクル(SDLC)用に自動化された CI/CD パイプラインを構築することをおすすめします。自動化された CI/CD パイプラインを使用すると、手動によるエラーをなくすことができます。標準化された開発フィードバック ループが提供されるので、プロダクトの効率的な反復が可能になります。継続的デリバリーは、DORA フレームワークで推奨されているベスト プラクティスの 1 つです。

CI/CD パイプラインを使用してアプリケーション リリースを自動化すると、セキュリティ バグを早期に迅速かつ確実に検出して修正できるようになります。たとえば、アーティファクトの作成時にセキュリティの脆弱性を自動的にスキャンし、セキュリティ審査の範囲を絞り込み、既知の安全なバージョンにロールバックできます。さまざまな環境(開発環境、テスト環境、本番環境など)に対してポリシーを定義し、検証されたアーティファクトのみをデプロイすることもできます。

アプリケーションのリリースを自動化し、CI/CD パイプラインにセキュリティ チェックを埋め込むために、 Google Cloud には Cloud BuildCloud DeployWeb Security ScannerBinary Authorization などの複数のツールが用意されています。

SDLC で複数のセキュリティ要件を検証するプロセスを確立するには、Google が定義した ソフトウェア アーティファクトのサプライ チェーン レベル(SLSA)フレームワークを使用します。SLSA では、ソースコード、ビルドプロセス、コードの来歴のセキュリティ チェックが必要です。これらの要件の多くは、自動化された CI/CD パイプラインに含めることができます。Google がこれらのプラクティスを社内でどのように適用しているかについては、Google Cloudの変化へのアプローチをご覧ください。

アプリケーションのデプロイが承認プロセスに従っていることを確認します

この推奨事項は、次の重点分野(アプリケーション セキュリティ)に関連しています。

攻撃者が CI/CD パイプラインを侵害すると、アプリケーション スタック全体が影響を受ける可能性があります。パイプラインを保護するには、コードを本番環境にデプロイする前に、確立された承認プロセスを適用する必要があります。

Google Kubernetes Engine(GKE)、GKE Enterprise、Cloud Run を使用する場合は、Binary Authorization を使用して承認プロセスを確立できます。Binary Authorization は、構成可能な署名をコンテナ イメージに適用します。これらのシグネチャ(証明書)はイメージの検証に役立ちます。デプロイ時に、Binary Authorization はこれらの証明書を使用してプロセスが完了したかどうかを判断します。たとえば、Binary Authorization を使用して次のことができます。

  • 特定のビルドシステムまたは CI パイプラインによってコンテナ イメージが作成されたことを確認する。
  • コンテナ イメージが脆弱性署名ポリシーを遵守していることを確認する。
  • コンテナ イメージが次のデプロイ環境(デプロイから QA まで)に昇格するための基準を満たしていることを確認する。

Binary Authorization を使用すると、信頼できるコードのみがターゲット プラットフォームで実行されるようにできます。

アプリケーションのデプロイ前に既知の脆弱性をスキャンする

この推奨事項は、次の重点分野(アプリケーション セキュリティ)に関連しています。

アプリケーション アーティファクトを本番環境にデプロイする前に、アプリケーション アーティファクトに対して継続的に脆弱性スキャンを実施できる自動化ツールの使用をおすすめします。

コンテナ化されたアプリケーションの場合は、Artifact Analysis を使用して、コンテナ イメージの脆弱性スキャンを自動的に実行します。Artifact Analysis は、Artifact Registry にアップロードされた新しいイメージをスキャンします。このスキャンにより、コンテナ内のシステム パッケージに関する情報が抽出されます。最初のスキャンの後、Artifact Analysis は、Artifact Registry 内でスキャンされたイメージのメタデータに新たな脆弱性がないか継続的にモニタリングを行います。Artifact Analysis は、新しい脆弱性情報と更新された脆弱性情報を脆弱性ソースから受け取ると、次の処理を行います。

  • スキャンしたイメージのメタデータを更新して、最新の状態に保つ。
  • 新しいメモ用の新しい脆弱性オカレンスを作成する。
  • 有効ではなくなった脆弱性を削除する。

アプリケーション コードで既知の脆弱性をモニタリングします

この推奨事項は、次の重点分野(アプリケーション セキュリティ)に関連しています。

自動化ツールを使用して、アプリケーション コードの既知の脆弱性(OWASP Top 10 など)を常にモニタリングします。OWASP Top 10 の緩和策をサポートする Google Cloud プロダクトと機能の詳細については、 Google Cloudの OWASP Top 10 緩和策をご覧ください。

Web Security Scanner を使用すると、App Engine、Compute Engine、GKE ウェブ アプリケーションの脆弱性を特定できます。このスキャナは、アプリケーションをクロールして、開始 URL の範囲内にあるすべてのリンクをたどり、できる限り多くのユーザー入力とイベント ハンドラを処理しようとします。クロスサイト スクリプティングコード インジェクション混在コンテンツ、古いライブラリや安全でないライブラリなど、一般的な脆弱性を自動的にスキャンして検出できます。Web Security Scanner は、誤検出に注意をそらすことなく、これらの脆弱性を早期に特定します。

また、GKE Enterprise を使用して Kubernetes クラスタのフリート管理を行う場合は、セキュリティ ポスチャー ダッシュボードに、フリートのセキュリティ ポスチャーの改善に役立つ独自の実行可能な推奨事項が表示されます。