Configuring Bamboo with AWS Secrets Manager

このページの内容

お困りですか?

アトラシアン コミュニティをご利用ください。

コミュニティに質問

AWS Secrets Manager は、ランタイム コールを通じて認証情報を取得するサービスで、ハードコードされた認証情報を完全に削除します。このタイプの暗号化は、データベースの認証情報を安全に保管するオプションが必要な場合に特に便利です。

AWS Secrets Manager uses AWS Identity and Access Management (IAM) for authentication and access control so you don’t need to create tokens or maintain keys with other third parties.

現在、認証情報の自動ローテーションはサポートされていません。

To configure Bamboo to work with AWS Secrets Manager:

  1. AWS Secrets Manager でシークレットを作成する

  2. シークレットを取得する権限を確認する

  3. AWS での認証

  4. シークレットを取得できることを確認する

  5. シークレットをプロパティ ファイルに追加する

次の手順に従って、プロセスを実行します。AWS Secrets Manager に関するその他のヘルプについては、 https://docs.aws.amazon.com/secretsmanager/index.html をご覧ください。

On this page:

ステップ 1: AWS Secrets Manager でシークレットを作成する

シークレットは、プレーンテキストまたは構造化テキストとして作成できます。プレーンテキストのシークレットを作成する方が、構造化されたシークレットを作成するよりも速くて簡単です。

違いを確認するには、各オプションが AWS コンソールとコードでどのように表示されるかを示す次の例を参照してください。

プレーンテキストのシークレット

AWS console showing a plaintext secret with the name mySecretId:

password

AWS Secrets manager plaintext secret example

これがコードでは次のように表示されます。

{"region":"ap-southeast-2","secretId":"mySecretId"}

構造化されたシークレット

名前 mySecretId の付いた、構造化されたシークレットが表示された AWS コンソール。password の値は secretPointer です。

{"password": "mySecretPassword"}

AWS Secrets manager structured secret example

これがコードでは次のように表示されます。

{"region":"ap-southeast-2","secretId":"mySecretId", "secretPointer": "/password"}

上の例では、JSON キーには次のものが含まれます。

JSON キー

説明

region

シークレット ソースの AWS リージョン ID

secretID

シークレットの ID

secretPointer

シークレットの値の JSON ポインター (シークレットの値がキーと値のペア構造の場合は必須) この値の前にスラッシュ (/) を付ける必要があることに注意してください。

Detailed steps

  1. プレーンテキストのシークレットと構造化されたシークレットのどちらを使用するか決定していることをご確認ください (詳細については、手順の上のコンテンツをご参照ください)。

  2. AWS の指示に従ってシークレットを作成します: AWS Secrets Manager のシークレットを作成する - AWS Secrets Manager

ステップ 2: シークレットを取得する権限を確認する

To retrieve any secrets from AWS Secrets Manager, Bamboo must have the appropriate AWS permissions, namely:

  • secretsmanager:GetSecretValue

下記は、(最小権限モデルに基づいて) 適切な権限を提供する Identity and Access Management (IAM) ポリシーの例です。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:role/MyRole"
            },
            "Action": "secretsmanager:GetSecretValue",
            "Resource": "arn:aws:secretsmanager:us-west-2:123456789012:secret:1a2b3c"
        }
    ]
}

補足情報

ステップ3: AWS への認証

Bamboo uses the AWS SDK for Java 2.x to communicate with AWS Secrets Manager. The SDK will search for credentials in your Bamboo environment in the predefined sequence below until it can be authenticated.

Amazon EC2 instance profile credentials are recommended by Amazon. If using this option, it is also advisable to use v2 of the Instance Meta Data Service.

Predefined sequence:

  1. 環境変数

  2. Java システムのプロパティ

    Java システム プロパティを使用する場合、これらの値はスタートアップ時に製品によって記録される可能性があることに注意してください。

  3. AWS セキュリティ トークン サービスのウェブ ID トークン

  4. 共有認証情報と config ファイル (~/.aws/credentials)

  5. Amazon ECS container credentials

  6. Amazon EC2 インスタンス プロファイル認証情報 (Amazon が推奨)

お使いの環境での認証情報の設定について、 Amazon には AWS 認証情報の取り扱いに関する開発者ガイドがあります。

Step 4: シークレットを取得できることを確認する

Now that a secret has been created, the correct permissions are in place and Bamboo is appropriately authenticated to AWS, let’s confirm the secret can be retrieved.

ホスト環境から次のコマンドを実行します。

aws secretsmanager get-secret-value --secret-id=mySecretId --region=ap-southeast-2

Step 5: Add the secret to bamboo.cfg.xml

  1. <home-directory>/bamboo.cfg.xml ファイルをバックアップします。バックアップをインスタンスの外部の安全な場所に移動します。

  2. bamboo.cfg.xml ファイルで、次の内容を含むように jdbc.password.decrypter.classname プロパティを追加または変更します。

    com.atlassian.secrets.store.aws.AwsSecretsManagerStore
  3. bamboo.cfg.xmlファイルで、AWS Secrets Manager のシークレットの座標を含むように hibernate.connection.password プロパティを追加または変更します。

    {"region":"ap-southeast-2","secretId":"mySecretId", "secretPointer": "/password"}

    値は、次の値を持つ JSON オブジェクトとして定義されます。

    • region (必須): AWS シークレットが置かれている AWS リージョン

    • secretId (必須): シークレットの名前

    • secretPointer (オプション): キーと値の構造を持つシークレット内のパスワードを含むキー。省略した場合、パスワードはプレーンテキストとして扱われます。

  4. Once updated bamboo.cfg.xml should contain:

    <property name="jdbc.password.decrypter.classname">com.atlassian.secrets.store.aws.AwsSecretsManagerStore</property>
    <property name="hibernate.connection.password">{"region":"ap-southeast-2","secretId":"mySecretId", "secretPointer": "/password"}</property>
  5. Bamboo を再起動します。








最終更新日: 2024 年 1 月 15 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.