Jihu GitLab CI x Vault、エンタープライズ キーのセキュリティとコンプライアンス管理で優れた仕事をする

目次

ボールトについて

Jihu GitLab CI と Vault の統合原理

Jihu GitLab CI を Vault と統合する 2 つの方法

シークレットの使用:vault キーワード

CLIモード


「アリの巣で千マイルの堤防が崩壊する。」 キー管理は、ソフトウェア開発のライフサイクル全体にとって、長い堤防にとってのアリの巣のようなものです キーの漏洩は、企業が恐喝攻撃を受ける重要な要因となっています。セキュリティとコンプライアンスの管理キーは、企業が大きな経済的損失を被るのを効果的に防ぐだけでなく、企業がセキュリティ コンプライアンスを確保しながらソフトウェアの配信を加速できるように、優れた企業セキュリティ文化を構築することもできます。

キー管理は、ソフトウェア開発のライフサイクル全体をカバーする必要があります。たとえば、コーディング段階ではキーのハードコーディングを回避し、ビルド段階ではキーがビルド ログに出力されないようにし、キーが正しいかどうかをスキャンする必要があります。変更されたコード (または履歴) はテスト段階で必要であり、重要な情報などが含まれます。GitLab 自体は成熟したキー管理機能を備えており、たとえば、CI/CD パイプライン段階では、CI 環境変数を使用してキーを保存したり、キー検出のためのセキュリティ スキャン手法を CI/CD パイプラインに組み込んで問題を検出したりすることもできます。漏洩を避けるために、コード内のキー情報を変更します。キー管理に関する Jihu GitLab CI の詳細については、記事Jihu GitLab CI/CD SSHKEY Maskを参照してください。Jihu GitLab キー セキュリティ スキャンに関する記事については、機密情報を提供する「キー検出」を有効にする 1 行のコードを表示できます。. データプラス保護ロック

この記事では、キーのセキュリティとコンプライアンス管理のための Jihu GitLab CI と Vault の統合について説明します。

ボールトについて

Vault は、Hashorp によって開始された、オープンソースの ID ベースのキーおよび暗号化管理システムです。API キー、ユーザー名とパスワード (パスワード)、アクセス トークン (トークン)、証明書 (証明書) などのキーを管理するには、デフォルトですべて拒否の原則を使用します。Vault の詳細については、Vault 公式 Web サイトをご覧ください。

Jihu GitLab CI と Vault の統合原理

  1. コンテナー上でキーを構成します (UI、CLI、または API)。

  2. CI ジョブで使用する JWT を生成します。

  3. Runner は Hashicorp に接続し、認証に JWT を使用します。

  4. Vault は JWT を検証します。

  5. Vault はバインドされたクレームと対応する Vault ポリシーをチェックします。

  6. Vault はアクセス トークンを返します。

  7. Runner は、使用するために Vault から重要な情報を読み取ります。

Jihu GitLab CI を Vault と統合する 2 つの方法

secrets キーワードまたは CLI を使用して、GitLab CI で Vault を使用できます 。

secrets:vault キーワードの使用

secrets これは、GitLab CI で外部キー管理ツールからキーを読み取るために使用されるキーワードです。これを使用して、  secrets:vault Vault サーバーに保存されているキー情報を読み取ることができます。

たとえば、kv エンジン (v2) は、コンテナー イメージ ウェアハウスのユーザー名とパスワードを保存するために Vault で使用されます。

# 写入用户名和密码
$ vault kv put jh/docker-registry/credentials username=jh-gitlab password=passw0rd

# 读取用户名和密码
vault  read -format=json jh/data/docker-registry/credentials | jq -r '.data.data'
{
  "password": "passw0rd",
  "username": "jh-gitlab"
}

ボールト関連の環境変数を GitLab CI 変数に保存します。

  • VAULT_SERVER_URL:vaultサーバーアドレス;

  • VAULT_AUTH_ROLE: コンテナー上で作成されたロールは、ストレージ キーの洗練された管理と制御を実現するために、対応するポリシーにバインドするために使用されます。

  • VAULT_AUTH_PATH: Vault auth の認証方法のマウント パス。デフォルトは です jwt

.gitlab-ci.yml ファイルの内容は次のとおりです。

stages:  
  - vault
  
get_credentials:  
  stage: vault  
  tags:    
    - vault  
  image:     
    name: vault:1.13.3  
  secrets:    
    DATABASE_PASSWORD:      
      vault: docker-registry/credentials/password@jh  
  script:    
    - echo $DATABASE_PASSWORD

CI/CD パイプラインのビルド結果を表示します。

DATABASE_PASSWORD Jihu GitLab CI がボールト情報を正常に読み取り、名前付きのファイルに保存したことがわかります 。パスは赤枠のスクリーンショットに示されているとおりです。

CLIモード

CLI を介してローカルで valut にアクセスするのと同じように、vault のさまざまなコマンドを使用して、キーの追加、削除、変更、クエリを実行できます。GitLab CI での CLI の使用を示すために、以前に書き込んだ重要な情報を例として取り上げます。

.gitlab-ci.yml ファイルの内容は次のとおりです。

get_credentials:  
  stage: vault  
  tags:    
    - vault  
  image: vault:1.13.3  
  script:  
    #  vault 服务器的地址  
    - export VAULT_ADDR=http://163.228.231.126:8200   
    #  vault 认证授权所用的 token
    - export VAULT_TOKEN="$(vault write -field=token auth/jwt/login role=jh jwt=$CI_JOB_JWT)"     
    # 从 vault 读取密钥信息  
    - export PASSWORD="$(vault kv get -field=password jh/docker-registry/credentials)"    
    # 打印密钥信息
    - echo $PASSWORD

CI/CD パイプラインのビルド結果を表示します。

Jihu GitLab CI がボールト情報を正常に読み取っていることがわかります。

なお、CLI で直接読み取ったキー情報は echo コマンドで出力できるため、CI/CD Pipeline 構築時にキー情報の出力を回避するか、CI/CD パイプライン構築時にキー情報の消失を回避する前者の方法をとる必要があります。 CD パイプラインの構築プロセス中にリークが発生しました。

参考:

  1.  Jihu GitLab Vault 公式 Web サイトのドキュメント

  2.  GitLab とボールトの詳細な構成ドキュメント (Jihu GitLab プリセールス ソリューション アーキテクト) ying Xuefeng が作成

おすすめ

転載: blog.csdn.net/weixin_44749269/article/details/132816996