AWS Secrets Manager で Confluence を構成する

このページの内容

お困りですか?

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

コミュニティに質問

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

AWS Secrets Manager は、認証とアクセス制御に AWS ID およびアクセス管理 (IAM) を使用しているため、トークンを作成したり、他のサードパーティとキーを管理したりする必要はありません。

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

On this page:

Confluence を AWS Secrets Manager と連携するように設定するには、次の操作を行います。

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

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

  3. AWS での認証

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

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

次の手順に従って、プロセスを実行します。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 キー

説明

region

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

secretID

シークレットの ID

secretPointer

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

Detailed steps

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

  2. 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"
        }
    ]
}

補足情報

ステップ3: AWS への認証

Confluence は Java 2.x 用 AWS SDK を使用して AWS Secrets Manager と通信します。SDK が認証されるまで、次の事前定義された順序で Confluence 環境の認証情報を検索します。

Amazon EC2 インスタンス プロファイルの認証情報は、Amazon が推奨しています。このオプションを使用する場合は、インスタンス メタ データ サービス v2 を使用することもお勧めします。

  1. 環境変数
  2. Java システムのプロパティ

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

  3. AWS セキュリティ トークン サービスのウェブ ID トークン
  4. 共有認証情報と config ファイル (~/.aws/credentials)

  5. Amazon ECS コンテナーの認証情報

  6. 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 に追加する

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

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

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

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


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

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

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

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

  4. 更新したら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>
  5. Confluence を再起動します。

最終更新日 2024 年 4 月 2 日

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

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