Configuring Bamboo with AWS Secrets Manager
ステップ 1: AWS Secrets Manager でシークレットを作成する
シークレットは、プレーンテキストまたは構造化テキストとして作成できます。プレーンテキストのシークレットを作成する方が、構造化されたシークレットを作成するよりも速くて簡単です。
違いを確認するには、各オプションが AWS コンソールとコードでどのように表示されるかを示す次の例を参照してください。
プレーンテキストのシークレット
AWS console showing a plaintext secret with the name mySecretId
:
password
これがコードでは次のように表示されます。
{"region":"ap-southeast-2","secretId":"mySecretId"}
構造化されたシークレット
名前 mySecretId
の付いた、構造化されたシークレットが表示された AWS コンソール。password
の値は secretPointer
です。
{"password": "mySecretPassword"}
これがコードでは次のように表示されます。
{"region":"ap-southeast-2","secretId":"mySecretId", "secretPointer": "/password"}
上の例では、JSON キーには次のものが含まれます。
JSON キー | 説明 |
---|---|
| シークレット ソースの AWS リージョン ID |
| シークレットの ID |
| シークレットの値の JSON ポインター (シークレットの値がキーと値のペア構造の場合は必須) この値の前にスラッシュ ( |
Detailed steps
プレーンテキストのシークレットと構造化されたシークレットのどちらを使用するか決定していることをご確認ください (詳細については、手順の上のコンテンツをご参照ください)。
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"
}
]
}
補足情報
権限の設定について詳しくは、AWS の説明書 (リンク付きの例を含む) に従ってください。
If you’re using your own KMS key for secret retrieval permission, follow the AWS instructions (with examples).
ステップ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.
v2
of the Instance Meta Data Service.
Predefined sequence:
環境変数
Java システムのプロパティ
Java システム プロパティを使用する場合、これらの値はスタートアップ時に製品によって記録される可能性があることに注意してください。
AWS セキュリティ トークン サービスのウェブ ID トークン
共有認証情報と
config
ファイル (~/.aws/credentials
)Amazon ECS container credentials
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
<home-directory>/bamboo.cfg.xml
ファイルをバックアップします。バックアップをインスタンスの外部の安全な場所に移動します。bamboo.cfg.xml
ファイルで、次の内容を含むようにjdbc.password.decrypter.classname
プロパティを追加または変更します。com.atlassian.secrets.store.aws.AwsSecretsManagerStore
bamboo.cfg.xml
ファイルで、AWS Secrets Manager のシークレットの座標を含むようにhibernate.connection.password
プロパティを追加または変更します。{"region":"ap-southeast-2","secretId":"mySecretId", "secretPointer": "/password"}
値は、次の値を持つ JSON オブジェクトとして定義されます。
region
(必須): AWS シークレットが置かれている AWS リージョンsecretId
(必須): シークレットの名前secretPointer
(オプション): キーと値の構造を持つシークレット内のパスワードを含むキー。省略した場合、パスワードはプレーンテキストとして扱われます。
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>
Bamboo を再起動します。