安全なアプリをデプロイするための DevSecOps インフラストラクチャーと CI ツールチェーンのセットアップ

このチュートリアルでは、Terraform ベースのクイック・スタート・テンプレートを使用して、CI および CD ツールチェーン用のインフラストラクチャーのセットアップとプロビジョニングを自動化します。 このテンプレートでは、コンプライアンスとセキュリティーの DevSecOps ベスト・プラクティスが採用されています。 このテンプレートは IBM Cloud® Schematics ワークスペースを使用します。これにより、Kubernetes または Red Hat® OpenShift® のいずれかにアプリを安全にデプロイするために必要なインフラストラクチャーの作成が自動化されます。このテンプレートは、DevSecOps IBM Cloud® Continuous Delivery ツールチェーン・パイプライン構造を使用します。 このツールチェーンは、インベントリー統合、変更管理、エビデンス収集、デプロイメントの継続的デリバリーのために事前構成されています。

IBM Cloud Schematics は、IBM Cloud 環境に必要なリソースを高水準スクリプト言語でモデル化して Infrastructure as Code (IaC) を実現できるように、Terraform-as-a-Service を提供するものです。 Terraformは、 HashiCorp によって開発されたオープンソースソフトウェアです。 Terraform は、予測可能で一貫性のあるリソース・プロビジョニングを可能にして、複雑な多層クラウド環境を迅速に構築します。

このチュートリアルでは、Schematics ワークスペースの作成、Terraform 実行プランの適用、および環境プロパティー値の更新という 3 つの簡単なステップを実行します。 プランを適用すると、Schematics ワークスペースによってセキュア・インフラストラクチャーのセットアップが行われます。 このインフラストラクチャーはチームと共有可能で、次のように機能する。 DevSecOpsソフトウェアの開発と運用のライフサイクルにセキュリティー・プラクティスを統合する方法論。 この組み合わせの目的は、開発速度とセキュリティーのバランスに優先順位を付けることにあります。 CIとCDのツールチェーンテンプレートに対応しています。

インフラストラクチャーの自動セットアップにより、DevSecOps CI と CD テンプレートからのデフォルト値を使用して自動的にプロビジョンされるリソースが作成されます。 これらのデフォルト値は Schematics ワークスペースの **「変数」**セクションで確認できます。 以下のリソースが作成されます。

開始前に

Schematics ワークスペースの作成

  1. クラスターのデプロイメント・ターゲットについての以下のいずれかのオプションをクリックします。 このアクションにより、「IBM Cloud にデプロイ」ページが表示され、そこで Schematics ワークスペースを作成できます。 そのページで入力が必要なフィールドに入力してから、**「次へ」**をクリックします。

    Kubernetes にデプロイする。 IBM Cloud

    配備先 OpenShift on IBM Cloud

    選択するオプションに基づいて、このリポジトリーの中の対応する Terraform テンプレートが新規 Schematics ワークスペースに自動的にインポートされます。

  2. 情報を確認してから、**「作成」**をクリックします。 Schematics ワークスペースが作成されて、Schematics ワークスペースの「設定」ページが表示されます。

Terraform 実行プランの適用

  1. Schematics の「設定」ページの**「変数」**セクションで、各変数の値を入力します。 必須フィールドにはデフォルト値がありません。 デフォルト値はオーバーライドできます。

    sm_service_name の値を上書きした場合、Terraformの実行プランは新しいリソースを作成する代わりに既存のリソースを使用します。

  2. gitlab_token 変数には、先程取得したパーソナル・アクセス・トークンを入力します。

  3. ibmcloud_api_key 変数には、先程取得した IBM Cloud API キーを入力します。

  4. registry_namespace 変数には、コンテナー・レジストリーの名前空間の値を入力します。 ネームスペースを作成するには、 Container Registry 名前空間 を参照してください。

  5. kube_version 、コマンドラインで ibmcloud ks versions。

  6. オプション。 既に Secrets Manager インスタンスがある場合は、sm_service_name 変数にその名前を入力します。 それ以外の場合は、この変数を変更しないでください。

  7. オプション。 クラスタのサイズや場所を調整したい場合は、以下の変数をオーバーライドできます: datacenter default_pool_size, machine_type, hardware, public_vlan_num, または private_vlan_num (デフォルト値は dal12/us-south データセンター用です)。

  8. オプション。 **「プランの生成」**をクリックします。 このアクションを実行すると、Terraform 実行プランが作成され、構文エラーがないか構成が検査されます。 Schematics の「ジョブ」ページでは、ログ・ファイルを確認して、エラーを有無を調べたり、Terraform テンプレートの正しい状態を実現するために、作成、修正、または削除が必要な IBM Cloud リソースがないかを確認したりすることができます。

  9. 変数の値をすべて入力し、変更内容に問題がなければ、**「プランの適用」**をクリックしてインフラストラクチャー・コードを実行します。

    このステップでは、Kubernetes または OpenShift の新規クラスターが作成されるため、完了までに多少の時間がかかります (通常は 20 分から 30 分程度ですが、それ以上かかることもあります)。

  10. Schematics の「ジョブ」ページでジョブ名を展開すると、ログを表示できます。

  11. プランを適用した後、生成された IBM Cloud DevSecOps CI ツールチェーンの URL を表示します。 URL は、ログ・ファイルの末尾近くの、View the toolchain at: で始まる行にあります。

プランを適用するのが 2 回目の場合は、以前に作成した Kubernetes または OpenShift のクラスターと、そこにデプロイされているアプリケーションが削除され、新規クラスターが作成されます。 ただし、デフォルトのクラスタ名を上書きした場合は、そのクラスタが使用される。

アプリのデプロイ

パイプラインを実行するには、以下の手順に従ってください。

  1. 新しく作成した DevSecOps CI toolchainにアクセスする。
  2. をクリックしてください。 Gitcompliance-app で始まるタイルをクリックする。
  3. pr-パイプラインを起動するには、 README.md ファイル内のテキストを更新し、 main ブランチに対して PR を開始します。
  4. Target Branch フィールドで、ブランチ名を main から別のものに変更します。 例えば、mybranchなどです。
  5. これらの変更で新しいマージリクエストを開始する」チェックボックスが選択されていることを確認してください。
  6. 変更をコミットするをクリックします。
  7. オプション。 新規マージリクエストのページで、説明を追加します。
  8. Create merge requestをクリックします。

ci-toolchainのpr-pipelineがトリガーされる。 以下のステップを完了し、パイプラインが稼動していることを確認する:

  1. CIツールチェインに戻り、以下のタイルをクリックする。 Delivery Pipelinepr-pipeline タイルをクリックする。 pr-pipelineのダッシュボード・ページでは、pr-pipelineが稼動していることが確認できます。

  2. 進捗状況を見るには、 pr-pipeline のリンクをクリックしてください。

    pr-pipeline
    図1 pr-pipelineダッシュボード

注:

  1. 脆弱性が見つかった場合、code-pr-finishステップは失敗する。

  2. 脆弱性を見つけるには、 code-unit-tests > run-stage 、ログを表示する。(スクリーンショット)

  3. 脆弱性を解決すると、pr-パイプラインが起動する。

  4. アプリのレポ・タイルに戻る。

  5. ナビペインで、 Merge requestsをクリックします。

  6. PRを選択する。

  7. オプション。 承認ボタンをクリックしてください(承認しない場合、Ci-Pipelineの実行の最後にエラーが表示されます)。

  8. "ソースブランチを削除 "を選択する

  9. Mergeをクリックする。

このPRをマージすると、自動的にci-pipelineが起動する。 検証するには、ツールチェインのci-pipelineタイルに戻り、パイプラインが実行されていることを確認する。 パイプラインのリンクをクリックし、進捗状況を確認する。

このステップでは、新しく作成されたクラスターにアプリをデプロイする。 アプリケーション URL は、ci-パイプラインの deploy-dev > run-stage ステップにあるログファイルの一番下にあります。

次のステップ

次のチュートリアルの「CI ツールチェーンの探索」セクションに進み、CI-PR および CI パイプラインを実行します。 その後、そのチュートリアルの残りのステップに進んで安全なアプリをデプロイします。

いつでも、メニュー アイコン 「メニュー」アイコン をクリックして リソース・リスト を選択することにより、このチュートリアルで作成したすべてのリソースを表示できます。 表示できるのは Schematics ワークスペース、クラスター、IBM Cloud Object Storage インスタンス、Secrets Manager サービス、継続的デリバリー・サービス、およびツールチェーンです。