Bitbucketプラグイン
KeeperシークレットマネージャーのBitbucketへの統合によるシークレットの動的な取得

機能
Bitbucket Pipelines内でKeeperボルトからシークレットを取得
Bitbucket Pipelineスクリプトで、ビルド引数または環境変数としてシークレット認証情報を設定
Keeperボルトからセキュリティで保護されたファイルをコピー
Keeperシークレットマネージャーの機能一覧については、概要をご参照ください。
前提条件
本ページでは、シークレットマネージャーとBitbucketの連携について取り扱います。本連携を利用するには、以下が必要です。
Keeperシークレットマネージャーへのアクセス(クイックスタートガイドをご参照ください)
Keeperのサブスクリプションでシークレットマネージャーアドオンが有効になっていること
シークレットマネージャーポリシーが有効なロールに所属していること
シークレットが共有されているKeeper シークレットマネージャーアプリケーション
アプリケーションの作成手順については、クイックスタートガイドをご参照ください
初期化済みのKeeper シークレットマネージャー構成
Bitbucket連携では、JSON形式とBase64形式の構成を使用できます
設定
構成の取得
Keeperコマンダーでアプリケーションに新しいクライアントを追加し、構成をBase64文字列として初期化します。これは「Initialized Config:」ラベルの後に表示される長いハッシュテキストです。
この値は、Repository settingsメニューの Bitbucket Repository variablesに、KSM_CONFIGという名前のセキュアなシークレットとして追加できます。これにより、Keeperシークレットマネージャーパイプで構成を変数として利用できます。

bitbucket-pipelines.ymlへの追加
パイプによる連携
パイプ連携の名前は以下のとおりです。
パイプでは、バージョン用のgitタグを選択する必要があります。README.mdのYAML定義には、常に最新のタグが記載されています。
変数
必須
KSM_CONFIG: Keeperシークレットマネージャーパイプには構成情報が必要です。リポジトリ変数に格納し、"${KSM_CONFIG}" で参照できます。
SECRETS: Keeper表記法と代入先の改行区切りリスト。表記法と代入先は > 文字で区切ります。
オプション
SCRIPT_FILE: パイプ内で実行するアプリケーションまたはシェルスクリプト。スクリプトからシークレットにアクセスできます。
SCRIPT_TEXT: bitbucket-pipelines.yml 内にスクリプトを直接記述します。SCRIPT_FILE が存在しない場合に使用します。使用する場合は、シェル関連の特殊文字をエスケープする必要があります。
SECRETS_FILE: 設定すると、環境変数に格納されるシークレットをファイルにも書き込みます。ファイル形式は SECRETS_FILE_TYPE によって決まります。
SECRETS_FILE_TYPE: SECRETS_FILE を使用する場合のファイル形式。有効な値は json、export、setenv、set。デフォルトは json
SHOW_OUTPUT: SCRIPT_FILE または SCRIPT_TEXT の出力を表示するブール型フラグ。REDACT 変数で、出力にシークレットを表示するかどうかを制御します。デフォルトは True
SAVE_OUTPUT_FILE: 設定すると、SCRIPT_FILE または SCRIPT_TEXT の出力をファイルに保存します。
REDACT: True の場合、SCRIPT_FILE または SCRIPT_TEXT に表示されたシークレットは **** に置き換えられます。デフォルトはTrue。ファイルに保存された出力は編集されません。
REMOVE_FILES: Trueの場合、パイプ終了時に作成したファイルをすべて削除します。値がFalseでない限り、パイプ外ではこれらのファイルを利用できません。デフォルトは True
CLEANUP_FILE: パイプ内で作成されたファイルを削除するシェルスクリプトの名前。ビルドワークスペースはビルド完了時に削除されますが、このシェルファイルを実行してファイルを確実に削除できます。未設定の場合、クリーンアップファイルは作成されません。
DEBUG: パイプ内のデバッグメッセージを有効にします。デフォルトはFalse
シークレットの取得
YAMLの SECRETS 変数には、Keeper表記法 と値の保存先のリストが含まれます。シークレットは環境変数またはファイルに格納できます。
変数のデフォルトの保存先は環境変数です。環境変数名の前に**env:**プレフィックスを付けられますが、必須ではありません。
環境変数名は、有効なUnix環境変数名である必要があります
シークレットを環境変数に保存
以下の例では、ログインシークレットを環境変数に格納します。2行は同じ動作で、1行目は**env:**プレフィックスなし、2行目はプレフィックスありです。
この例では、1adh_WZxtbbHWqf6IALMVg がレコードUIDです。
シークレットをファイルに保存
シークレットがバイナリデータの場合は、エンコードの問題があるため、環境変数への格納は避けてください。代わりに**file:**代入先を使用します。
REMOVE_FILES 変数がTrueの場合、ファイルはパイプ終了時に削除されます。パイプ外でファイルを使用する場合は、この変数を False に設定します。
例
例1 - Dockerビルド
この例では、SSL証明書を含むカスタム server.xml 設定とキーストアで構成されたTomcatサーバーのDockerイメージを作成します。server.xml とキーストアはKeeperボルトに保存されています。
最初の手順は、Bitbucketでリポジトリを作成し、Dockerfileを追加することです。このDockerfileは、Keeperシークレットマネージャーパイプで作成された2つのファイルを公式のTomcat Dockerイメージに追加します。
次に、Keeperシークレットマネージャーパイプ用の構成が必要です。Keeperコマンダーで構成をBase64として初期化して作成できます。
構成の作成オプションの詳細は、構成ドキュメントをご参照ください。
Initialized Config: のBase64文字列をRepository variablesにコピーして貼り付けます。この例では、変数名はKSM_CONFIGです。プライベートDocker Hubのユーザー名とパスワードもRepository variablesに追加します。

次に、リポジトリに bitbucket-pipelines.yml ファイルを追加します。
上記は、DockerイメージをビルドしてDocker Hubアカウントにプッシュするために使用します。最初の手順では、Keeperシークレットマネージャーパイプで2つのファイルを取得し、作業ディレクトリに配置します。
パイプ終了後にファイルを削除しないため、REMOVE_FILES 変数はFalseに設定されています。
CLEANUP_FILE 変数はksm_cleanup.shに設定され、完了時に2つのファイルを削除するスクリプトを作成します。
Dockerfileをビルドすると、2つのファイルがイメージ内の適切な場所に追加されます。完了後、イメージがDocker Hubアカウントにプッシュされます。
最後に、CLEANUP_FILE 変数で設定された ksm_cleanup.sh スクリプトを実行します。これにより、作成した2つのファイルが確実に削除されます。Bitbucket Pipelineは完了時にワークスペースを削除しますが、このスクリプトでファイル削除を保証できます。
例2 - Keeperシークレットマネージャーパイプを他のパイプと併用
この例では、別のパイプの変数として使用するシークレットを取得します。別のパイプは、ローカルディレクトリをS3バケットにコピーするAWS S3 Deployパイプです。
Keeperボルトに、AWS認証情報とS3バケット情報を含むレコードを作成します。

最初にBitbucketでリポジトリを作成し、Keeperシークレットマネージャーパイプ構成をRepository variablesに格納します。Keeperコマンダーで構成をBase64として初期化して作成できます。
構成の作成オプションの詳細は、構成ドキュメントをご参照ください。
Initialized Config: のBase64文字列をRepository variablesにコピーして貼り付けます。この例では、変数名はKSM_CONFIGです。

次に、リポジトリに bitbucket-pipelines.yml ファイルを追加します。
bitbucket-pipelines.yml には、レコードからAWS認証情報を取得して環境変数に格納するKeeperシークレットマネージャーパイプが含まれます。PNG画像を取得し、to_s3ディレクトリに書き込みます。このパイプは secrets.env というシークレットファイルを作成します。
SECRETS_FILE_TYPE はexportで、内容を読み込んでシークレット値を環境変数に設定できます。
次に、シークレットファイルを読み込みます。これにより、他のパイプやアプリケーションが環境変数としてシークレットにアクセスできます。
最後の手順では、aws-s3-deployパイプを使用してイメージをS3バケットにコピーします。aws-s3-deployパイプの変数は、Keeperシークレットマネージャーパイプのシークレットファイルで設定された環境変数を使用します。
最終更新

