> For the complete documentation index, see [llms.txt](https://docs.keeper.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.keeper.io/keeperpam/jp/secrets-manager/integrations/bitbucket-plugin.md).

# Bitbucketプラグイン

![](/files/WakRF6UbJjbjc6DRMq2W)

## 機能

* Bitbucket Pipelines内でKeeperボルトからシークレットを取得
* Bitbucket Pipelineスクリプトで、ビルド引数または環境変数としてシークレット認証情報を設定
* Keeperボルトからセキュリティで保護されたファイルをコピー

{% hint style="info" %}
Keeperシークレットマネージャーの機能一覧については、[概要](/keeperpam/jp/secrets-manager/overview.md)をご参照ください。
{% endhint %}

## 前提条件

本ページでは、シークレットマネージャーとBitbucketの連携について取り扱います。本連携を利用するには、以下が必要です。

* Keeperシークレットマネージャーへのアクセス（[クイックスタートガイド](/keeperpam/jp/secrets-manager/quick-start-guide.md)をご参照ください）
  * Keeperのサブスクリプションでシークレットマネージャーアドオンが有効になっていること
  * シークレットマネージャーポリシーが有効なロールに所属していること
* シークレットが共有されているKeeper [シークレットマネージャーアプリケーション](/keeperpam/jp/secrets-manager/about/terminology.md#application)
  * アプリケーションの作成手順については、[クイックスタートガイド](https://docs.keeper.io/keeperpam/jp/secrets-manager/integrations/pages/-MeRAVfQmDBzKQBC0f_c#2.-create-an-application)をご参照ください
* 初期化済みのKeeper [シークレットマネージャー構成](/keeperpam/jp/secrets-manager/about/secrets-manager-configuration.md)
  * Bitbucket連携では、JSON形式とBase64形式の構成を使用できます

## 設定

### 構成の取得

Keeperコマンダーでアプリケーションに新しいクライアントを追加し、構成をBase64文字列として初期化します。これは「Initialized Config:」ラベルの後に表示される長いハッシュテキストです。

```
My Vault> sm client add --app MyApp --config-init b64

Successfully generated Client Device
====================================

Initialized Config: eyJob3N0bmFtZSI6ICJr....OUk1ZTV1V2toRucXRsaWxqUT0ifQ==
IP Lock: Enabled
Token Expires On: 2021-10-19 15:31:31
App Access Expires on: Never
```

この値は、**Repository settings**メニューの Bitbucket **Repository variables**に、**KSM\_CONFIG**という名前のセキュアなシークレットとして追加できます。これにより、Keeperシークレットマネージャーパイプで構成を変数として利用できます。

![](/files/3vp1AR6TnRnGkeHXtQAz)

### bitbucket-pipelines.ymlへの追加

```
image: atlassian/default-image:2

pipelines:
  default:
    - step:
        name: 'Build My Stuff'
        script:
          - pipe: keepersecurity/keeper-secrets-manager-pipe:<tag>
            variables:
              KSM_CONFIG: "${KSM_CONFIG}"
              SECRETS: |
                1adh_WZxtbbHWqf6IALMVg/field/login > MY_LOGIN
                V8lFbio0Bs0LuvaSD5DDHA/file/IMG_0036.png > file:my.png
              SCRIPT_TEXT: |
                #!/usr/bin/env bash
                echo "My Login = \${MY_LOGIN}"
                ls my.png
              SHOW_OUTPUT: "True"
              SECRETS_FILE: "secret.env"
              SECRETS_FILE_TYPE: "export"
          - source secret.env
```

#### パイプによる連携

パイプ連携の名前は以下のとおりです。

```
        script:
          - pipe: keepersecurity/keeper-secrets-manager-pipe:<tag>
```

{% hint style="info" %}
パイプでは、バージョン用のgitタグを選択する必要があります。[README.md](https://bitbucket.org/keepersecurity/keeper-secrets-manager-pipe/src/master/README.md)のYAML定義には、常に最新のタグが記載されています。
{% endhint %}

### 変数

#### 必須

**`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表記法](/keeperpam/jp/secrets-manager/about/keeper-notation.md) と値の保存先のリストが含まれます。シークレットは環境変数またはファイルに格納できます。

変数のデフォルトの保存先は環境変数です。環境変数名の前に\*\*env:\*\*プレフィックスを付けられますが、必須ではありません。

{% hint style="info" %}
環境変数名は、有効なUnix環境変数名である必要があります
{% endhint %}

### シークレットを環境変数に保存

以下の例では、ログインシークレットを環境変数に格納します。2行は同じ動作で、1行目は\*\*env:\*\*プレフィックスなし、2行目はプレフィックスありです。

```
        script:
          - pipe: keepersecuirty/keeper-secrets-manager-pipe:<tag>
            variables:
              KSM_CONFIG: "${KSM_CONFIG}"
              SECRETS: |
                1adh_WZxtbbHWqf6IALMVg/field/login > MY_LOGIN
                1adh_WZxtbbHWqf6IALMVg/field/login > env:SAME_LOGIN          
```

この例では、`1adh_WZxtbbHWqf6IALMVg` がレコードUIDです。

### シークレットをファイルに保存

シークレットがバイナリデータの場合は、エンコードの問題があるため、環境変数への格納は避けてください。代わりに\*\*file:\*\*代入先を使用します。

```
        script:
          - pipe: keepersecurity/keeper-secrets-manager-pipe:<tag>
            variables:
              KSM_CONFIG: "${KSM_CONFIG}"
              SECRETS: |
                1adh_WZxtbbHWqf6IALMVg/file/server.xml > file:server.xml
                1adh_WZxtbbHWqf6IALMVg/file/domain.crt > file:config/path/domain.crt             
```

`REMOVE_FILES` 変数がTrueの場合、ファイルはパイプ終了時に削除されます。パイプ外でファイルを使用する場合は、この変数を False に設定します。

## 例

### 例1 - Dockerビルド

この例では、SSL証明書を含むカスタム server.xml 設定とキーストアで構成されたTomcatサーバーのDockerイメージを作成します。server.xml とキーストアはKeeperボルトに保存されています。

最初の手順は、Bitbucketでリポジトリを作成し、Dockerfileを追加することです。このDockerfileは、Keeperシークレットマネージャーパイプで作成された2つのファイルを公式のTomcat Dockerイメージに追加します。

```
FROM tomcat:10-jdk16

ADD /server.xml /usr/local/tomcat/conf/server.xml
ADD /localhost-rsa.jks /usr/local/tomcat/conf/localhost-rsa.jks

# Expose port 8443 for SSL
EXPOSE 8443
```

次に、Keeperシークレットマネージャーパイプ用の構成が必要です。Keeperコマンダーで構成をBase64として初期化して作成できます。

```
My Vault> sm client add --app MyApp --config-init b64

Successfully generated Client Device
====================================

Initialized Config: eyJob3N0bmFtZSI6ICJr....OUk1ZTV1V2toRucXRsaWxqUT0ifQ==
IP Lock: Enabled
Token Expires On: 2021-10-19 15:31:31
App Access Expires on: Never
```

{% hint style="info" %}
構成の作成オプションの詳細は、[構成ドキュメント](/keeperpam/jp/secrets-manager/about/secrets-manager-configuration.md#creating-a-secrets-manager-configuration)をご参照ください。
{% endhint %}

**Initialized Config:** のBase64文字列を**Repository variables**にコピーして貼り付けます。この例では、変数名は**KSM\_CONFIG**です。プライベートDocker Hubのユーザー名とパスワードも**Repository variables**に追加します。

![](/files/AcgXKceSltqUGUqfacbu)

次に、リポジトリに `bitbucket-pipelines.yml` ファイルを追加します。

```
image: atlassian/default-image:2

pipelines:
  default:
    - step:
        name: 'Build Custom Tomcat Server'
        script:
          - pipe: keepersecuirty/keeper-secrets-manager-pipe:<tag>
            variables:
              KSM_CONFIG: "${KSM_CONFIG}"
              SECRETS: |
                3GGclNXOoU0DwZwdn6iZmg/file/server.xml > file:server.xml
                3GGclNXOoU0DwZwdn6iZmg/file/localhost-rsa.jks > file:localhost-rsa.jks
              REMOVE_FILES: "False"
              CLEANUP_FILE: "ksm_cleanup.sh"
          - VERSION="1.$BITBUCKET_BUILD_NUMBER"
          - IMAGE="$DOCKERHUB_USERNAME/$BITBUCKET_REPO_SLUG"
          - docker login --username "$DOCKERHUB_USERNAME" --password "${DOCKERHUB_PASSWORD}"
          - docker image build -t ${IMAGE}:${VERSION} .
          - docker image tag ${IMAGE}:${VERSION} ${IMAGE}:latest
          - docker image push ${IMAGE}
          - git tag -a "${VERSION}" -m "Tagging for release ${VERSION}"
          - git push origin ${VERSION}
          - ./ksm_cleanup.sh
        services:
          - docker
```

上記は、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バケット情報を含むレコードを作成します。

![](/files/94Z2jmktt25z5l440KYF)

最初にBitbucketでリポジトリを作成し、Keeperシークレットマネージャーパイプ構成を**Repository variables**に格納します。Keeperコマンダーで構成をBase64として初期化して作成できます。

```
My Vault> sm client add --app MyApp --config-init b64

Successfully generated Client Device
====================================

Initialized Config: eyJob3N0bmFtZSI6ICJr....OUk1ZTV1V2toRucXRsaWxqUT0ifQ==
IP Lock: Enabled
Token Expires On: 2021-10-19 15:31:31
App Access Expires on: Never
```

{% hint style="info" %}
構成の作成オプションの詳細は、[構成ドキュメント](/keeperpam/jp/secrets-manager/about/secrets-manager-configuration.md#creating-a-secrets-manager-configuration)をご参照ください。
{% endhint %}

**Initialized Config:** のBase64文字列を**Repository variables**にコピーして貼り付けます。この例では、変数名は**KSM\_CONFIG**です。

![](/files/OjbCskRPLj3r99KwuN9O)

次に、リポジトリに `bitbucket-pipelines.yml` ファイルを追加します。

```
image: atlassian/default-image:2

pipelines:
  default:
    - step:
        name: 'Copy Image To S3'
        script:
          - pipe: keepersecurity/keeper-secrets-manager-pipe:<tag>
            variables:
              KSM_CONFIG: "${KSM_CONFIG}"
              SECRETS: |
                IumwT1QYRr8TTCtY8rqzhw/custom_field/AWS_ACCESS_KEY_ID > AWS_ACCESS_KEY_ID
                IumwT1QYRr8TTCtY8rqzhw/custom_field/AWS_SECRET_ACCESS_KEY > AWS_SECRET_ACCESS_KEY
                IumwT1QYRr8TTCtY8rqzhw/custom_field/AWS_DEFAULT_REGION > AWS_DEFAULT_REGION
                IumwT1QYRr8TTCtY8rqzhw/custom_field/S3_BUCKET > S3_BUCKET
                V8lFbio0Bs0LuvaSD5DDHA/file/IMG_0036.png > file:to_s3/my_image.png
              SECRETS_FILE: "secrets.env"
              SECRETS_FILE_TYPE: "export"
          - source ./secrets.env
          - pipe: atlassian/aws-s3-deploy:1.1.0
            variables:
              AWS_ACCESS_KEY_ID: "${AWS_ACCESS_KEY_ID}"
              AWS_SECRET_ACCESS_KEY: "${AWS_SECRET_ACCESS_KEY}"
              AWS_DEFAULT_REGION: "${AWS_DEFAULT_REGION}"
              S3_BUCKET: "${S3_BUCKET}"
              LOCAL_PATH: "to_s3"
```

`bitbucket-pipelines.yml` には、レコードからAWS認証情報を取得して環境変数に格納するKeeperシークレットマネージャーパイプが含まれます。PNG画像を取得し、**to\_s3**ディレクトリに書き込みます。このパイプは secrets.env というシークレットファイルを作成します。

`SECRETS_FILE_TYPE` は**export**で、内容を読み込んでシークレット値を環境変数に設定できます。

次に、シークレットファイルを読み込みます。これにより、他のパイプやアプリケーションが環境変数としてシークレットにアクセスできます。

最後の手順では、**aws-s3-deploy**パイプを使用してイメージをS3バケットにコピーします。aws-s3-deployパイプの変数は、Keeperシークレットマネージャーパイプのシークレットファイルで設定された環境変数を使用します。


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.keeper.io/keeperpam/jp/secrets-manager/integrations/bitbucket-plugin.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
