正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

プロジェクトレベルのセキュアファイル

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

この機能はMobile DevOpsの一部です。この機能はまだ開発中ですが、次のことができます。

CI/CDパイプラインで使用するために最大100個のファイルをセキュアファイルとして安全に保存できます。これらのファイルは、プロジェクトのリポジトリの外部に安全に保存され、バージョン管理は行われません。これらのファイルに機密情報を安全に保存できます。セキュアファイルは平文とバイナリの両方のファイル形式をサポートしますが、5 MB以下である必要があります。

セキュアファイルは、プロジェクト設定、またはセキュアファイルのAPIで管理できます。

glab securefileコマンドを使用することで、セキュアファイルはCI/CDジョブでダウンロードおよび使用できます。

セキュアファイルをプロジェクトに追加する

セキュアファイルをプロジェクトに追加するには:

  1. 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
  2. 左サイドバーで、設定 > CI/CDを選択します。
  3. セキュアファイルセクションを展開します。
  4. ファイルをアップロードを選択します。
  5. アップロードするファイルを見つけ、オープンを選択すると、すぐにファイルのアップロードが開始されます。アップロードが完了すると、ファイルがリストに表示されます。

CI/CDジョブでセキュアファイルを使用する

セキュアファイルの内容は、ジョブログの出力でマスクされません。特に機密情報を含んでいる可能性のある出力をログに記録する場合は、ジョブログにセキュアファイルの内容を出力しないようにしてください。

glabツールを使用する

glabで1つまたは複数のセキュアファイルをダウンロードするには、CI/CDジョブでcli Dockerイメージを使用できます。

プロジェクト内のすべてのファイルをダウンロード

プロジェクト内のすべてのセキュアファイルをダウンロードするには:

test:
  image: registry.gitlab.com/gitlab-org/cli:latest
  script:
    - glab auth login --job-token $CI_JOB_TOKEN --hostname $CI_SERVER_FQDN --api-protocol $CI_SERVER_PROTOCOL
    - glab -R $CI_PROJECT_PATH securefile download --all --output-dir="where/to/save"

この例では、すべての変数は、自動的に利用可能な定義済み変数です。

プロジェクト内の単一ファイルをダウンロード

test:
  image: registry.gitlab.com/gitlab-org/cli:latest
  script:
    - glab auth login --job-token $CI_JOB_TOKEN --hostname $CI_SERVER_FQDN --api-protocol $CI_SERVER_PROTOCOL
    - glab -R $CI_PROJECT_PATH securefile download $SECURE_FILE_ID --path="where/to/save/file.txt"

SECURE_FILE_ID CI/CD変数は、たとえばCI/CD設定パイプラインの手動実行などで、ジョブに明示的に渡す必要があります。他のすべての変数は、自動的に利用可能な定義済み変数です。

または、Dockerイメージを使用する代わりに、バイナリをダウンロードしてCI/CDジョブで使用できます。

download-secure-filesツール(非推奨)を使用

この方法は非推奨です。

CI/CDジョブでセキュアファイルを使用する場合、download-secure-filesツールを使用して、ジョブでファイルをダウンロードできます。ダウンロード後、他のスクリプトコマンドと一緒に使用できます。

download-secure-filesツールをダウンロードして実行するために、ジョブのscriptセクションにコマンドを追加します。ファイルは、プロジェクトのルートにある.secure_filesディレクトリにダウンロードされます。セキュアファイルのダウンロード場所を変更するには、SECURE_FILES_DOWNLOAD_PATH CI/CD変数にパスを設定します。

例:

test:
  variables:
    SECURE_FILES_DOWNLOAD_PATH: './where/files/should/go/'
  script:
    - curl --silent "https://gitlab.com/gitlab-org/incubation-engineering/mobile-devops/download-secure-files/-/raw/main/installer" | bash

セキュリティの詳細

プロジェクトレベルのセキュアファイルは、Ci::SecureFileUploaderインターフェースを使用して、Lockbox Ruby gemによってアップロード時に暗号化されます。このインターフェースは、アップロード時にソースファイルのSHA256チェックサムを生成し、そのチェックサムをレコードとともにデータベースに保持します。これは、ダウンロード時にファイルの内容を検証する際に使用できます。

ファイルが作成されるたびに各ファイルに一意の暗号化キーが生成され、データベースに保持されます。暗号化されたアップロードファイルは、GitLabインスタンスの設定に応じて、ローカルストレージまたはオブジェクトストレージに保存されます。

個々のファイルは、セキュアファイルダウンロードAPIで取得できます。メタデータは、リストまたは表示APIエンドポイントで取得できます。ファイルはglab securefileコマンドを使用しても取得できます。このコマンドは、各ファイルがダウンロードされる際に、自動的にそのチェックサムを検証します。

デベロッパー、メンテナー、またはオーナーのロールを持つプロジェクトメンバーは、プロジェクトレベルのセキュアファイルにアクセスできます。プロジェクトレベルのセキュアファイルの操作は監査イベントに含まれていませんが、イシュー117でこの機能の追加が提案されています。