AWS Secrets Manager で Confluence を構成する
Confluence を AWS Secrets Manager と連携するように設定するには、次の操作を行います。
AWS Secrets Manager でシークレットを作成する
シークレットを取得する権限を確認する
AWS での認証
シークレットを取得できることを確認する
シークレットをプロパティ ファイルに追加する
次の手順に従って、プロセスを実行します。AWS Secrets Manager に関するその他のヘルプについては、 https://docs.aws.amazon.com/secretsmanager/index.html をご覧ください。
ステップ 1: AWS Secrets Manager でシークレットを作成する
シークレットは、プレーンテキストまたは構造化テキストとして作成できます。プレーンテキストのシークレットを作成する方が、構造化されたシークレットを作成するよりも速くて簡単です。
違いを確認するには、各オプションが AWS コンソールとコードでどのように表示されるかを示す次の例を参照してください。
プレーンテキストのシークレット
名前 mySecretId
の付いたプレーンテキストのシークレットが表示された AWS コンソール:
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: シークレットを取得する権限を確認する
AWS Secrets Manager からシークレットを取得するには、Confluence に適切な AWS 権限、つまり以下が必要です。
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 の手順 (例のリンクを含む) に従ってください。
- シークレット取得の権限に独自の KMS キーを使用している場合は、AWS の説明書 (例を含む) に従ってください。
ステップ3: AWS への認証
Confluence は Java 2.x 用 AWS SDK を使用して AWS Secrets Manager と通信します。SDK が認証されるまで、次の事前定義された順序で Confluence 環境の認証情報を検索します。
Amazon EC2 インスタンス プロファイルの認証情報は、Amazon が推奨しています。このオプションを使用する場合は、インスタンス メタ データ サービス v2
を使用することもお勧めします。
- 環境変数
Java システムのプロパティ
Java システム プロパティを使用する場合、これらの値はスタートアップ時に製品によって記録される可能性があることに注意してください。
- AWS セキュリティ トークン サービスのウェブ ID トークン
共有認証情報と
config
ファイル (~/.aws/credentials
)Amazon ECS コンテナーの認証情報
Amazon EC2 インスタンス プロファイル認証情報 (Amazon が推奨)
お使いの環境での認証情報の設定について、 Amazon には AWS 認証情報の取り扱いに関する開発者ガイドがあります。
Step 4: シークレットを取得できることを確認する
シークレットが作成され (created,
) 正しい権限が設定され、Confluence が AWS に対して適切に認証されたら、シークレットが取得できることを確認しましょう。
ホスト環境から次のコマンドを実行します。
aws secretsmanager get-secret-value --secret-id=mySecretId --region=ap-southeast-2
ステップ 5: シークレットを confluence.cfg.xml に追加する
<home-directory>/confluence.cfg.xml
ファイルをバックアップします。バックアップをインスタンスの外部の安全な場所に移動します。confluence.cfg.xml
ファイルで、次の内容を含むようにjdbc.password.decrypter.classname
プロパティを追加または変更します。com.atlassian.secrets.store.aws.AwsSecretsManagerStore
confluence.cfg.xml
ファイルで、AWS Secrets Manager のシークレットの座標を含むようにhibernate.connection.password
プロパティを追加または変更します。{"region":"ap-southeast-2","secretId":"mySecretId", "secretPointer": "/password"}
値は、次の値を持つ JSON オブジェクトとして定義されます。region
(必須): AWS シークレットが置かれている AWS リージョンsecretId
(必須): シークレットの名前secretPointer
(オプション): キーと値の構造を持つシークレット内のパスワードを含むキー。省略した場合、パスワードはプレーンテキストとして扱われます。
更新したら、
confluence.cfg.xml
には次の内容が含まれているはずです。<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>
Confluence を再起動します。