AWS Secrets Manager のマネージド外部シークレットで Datadog の認証情報を自動ローテーションしてみた

AWS Secrets Manager のマネージド外部シークレットで Datadog の認証情報を自動ローテーションしてみた

AWS Secrets Manager のマネージド外部シークレットが Datadog に対応したため、実際に Datadog 認証情報の自動ローテーションを試してみました。ローテーションの仕組みからセットアップ手順、ハマったポイントまでをまとめています。
2026.06.08

はじめに

こんにちは。しいなです。
AWS Secrets Manager のマネージド外部シークレットは、サードパーティサービスと統合し、AWS が管理するローテーションの仕組みで外部サービスの認証情報を自動ローテーションできる機能です。
先日、Datadog 統合に対応したため、Datadog 認証情報を自動ローテーションできるようになりました。
https://aws.amazon.com/about-aws/whats-new/2026/05/secrets-manager-managed-external-secrets-datadog-snowflake/

実際に試してみましたので、ローテーションの仕組みを整理しつつ、シークレットの登録手順をまとめてみました。

マネージド外部シークレット

AWS Secrets Manager のシークレットタイプの一つです。
サードパーティサービスと統合し、シークレットの自動ローテーションを行うことができます。
Datadog の統合に対応したため、Datadog 認証情報(API キーやアプリケーションキー)を自動ローテーションすることができます。
従来、自動ローテーションを実現するためには、AWS Lambda 関数を作成および管理する必要がありましたが、マネージドサービスとして利用できます。

Datadog のマネージド外部シークレット

登録できる Datadog のシークレットタイプは以下の3種類です。

  • Datadog API キー(DatadogApiKey)
  • Datadog アプリケーションキー(DatadogApplicationKey)
  • Datadog 管理者キー(DatadogAdminKey)

制約

ローテーション可能な Datadog アプリケーションキーは Datadog 管理者アプリケーションキーと同一のサービスアカウントが所有している必要があります。

ローテーションの動作

Datadog 管理者キーを利用して、他の APIキー、アプリケーションキーのローテーションを行います。
そのため、Datadog 管理者キー(Datadog API キーとアプリケーションキーのペア)をシークレットに登録する必要があります。
Datadog 管理者キー自体は自己ローテーション可能です。
イメージ

Secrets Manager は Datadog 管理者キーを用いて次のようにローテーションを行います。

    1. 現在のキーの所有権を検証
    1. Datadog サービスアカウント API を通じて新しいアプリケーションキーを作成
    1. その後、新しいキーを検証し、AWSCURRENT に昇格させたうえで、古いキーを削除(※Datadog API キーは2世代前のキーを削除)

Datadog のサービスアカウント

Datadog のアプリケーションキーをチーム全体で共有するための特別なアカウントです。
通常のアプリケーションキーは Datadog の個人アカウントが所有するため、アカウントを無効化すると、アプリケーションキーも同時に失効する注意点がありました。
サービスアカウントを利用すると、サービスアカウントが Datadog アプリケーションキーを所有するため、個人アカウントの無効化による失効を回避できます。

Datadog 管理者アプリケーションキーに必要な権限

管理者アプリケーションキーに必要な権限スコープは次の通りです。

スコープ 説明
api_keys_delete 組織の API キーを削除する
api_keys_write 組織の API キーを作成・名前変更する
org_app_keys_read 組織内全ユーザーが所有するアプリケーションキーを閲覧する
org_app_keys_write 組織内全ユーザーが所有するアプリケーションキーを管理する
service_account_write 組織のサービスアカウントを作成・無効化・使用する

Datadog 管理者アプリケーションキーは他の API キーやアプリケーションキーをローテーションする目的のため、最小限の権限を割り当てるのが良いでしょう。

Datadog のセットアップ

1. サービスアカウント登録

  1. メニューの「Organization-settings > Service-accounts」を選択します。
    Service-Accounts-menu

  2. 「New Service Account」を選択します。

  3. 以下を入力して「Create Service Account」を選択します。

  • Name:任意 (例:SRE Team Service Account)
  • Email:メールアドレス
  • Assign Roles:Datadog Admin Role
    Service-Accounts-1
  1. 一覧より作成したアカウントを選択します。
    Service-Accounts-2

  2. 後述の設定で必要となる DatadogサービスアカウントID(UUID)を URL クエリパラメータから取得します。

URL形式
https://app.datadoghq.com/organization-settings/service-accounts?service_account_id=xxxxxxxxxxx-xxxxx-xxxx-xxxxxxxx

パラメータ名 service_account_id= の値が Datadog サービスアカウントID(UUID)です。

2. 管理者アプリケーションキー発行

  1. 「New Key」を選択します。
    Service-Accounts-2

  2. 任意の Name (例:Datadog Admin Application Key)を指定して 「Create Key」を選択します。

  3. キー値と KeyID(UUID) を控えます。

  1. Scopes「Edit」を選択します。
  2. 最小限の権限である、以下のスコープにチェックを入れて「Save」を選択します。
  • api_keys_delete
  • api_keys_write
  • org_app_keys_read
  • org_app_keys_write
  • service_account_write
    Service-Accounts-4
  1. 「Finish」を選択します。
    Service-Accounts-Datadog-06-02-2026_06_58_PM

3. アプリケーションキー発行

続けて、自動ローテーションさせる アプリケーションキーを発行します。

  1. 「New Key」を選択します。
  2. 任意の Name (例:SRE Team Datadog Application Key)を指定して 「Create Key」を選択します。
  3. キー値と KeyID(UUID) を控えます。
  1. 「Finish」を選択します。
    スコープの設定は任意です。
    設定する場合は、アプリケーションキーを利用してリクエストする API に応じたスコープを選択してください。

4. 管理者 API キー発行

  1. メニューの「Organization-settings > API Keys」を選択します。
    menu1

  2. 「New key」を選択します。

  3. 任意の Name (例:Datadog Admin Api Key)を指定して 「Create Key」を選択します。

  4. キー値と keyID(UUID) を控え、「Finish」を選択します。
    API-Keys-Datadog-06-02-2026_07_01_PM

5. API キー発行

続けて、自動ローテーションさせる APIキー を発行します。

  1. 「New key」を選択します。
  2. 任意の Name (例:SRE Team Datadog Api Key)を指定して 「Create Key」を選択します。
  3. キー値と keyID(UUID) を控え、「Finish」を選択します。

AWS Secrets Manager のセットアップ

1. IAM ロール作成

マネージド外部シークレットのローテーションに必要なポリシーを与えたロールを作成します。
ロールは API キー、アプリケーションキー、Datadog管理者キーそれぞれのシークレットに対して、共有利用します。
ローテーションには Datadog 管理者キーを利用するため、Datadog 管理者キーを登録したシークレットに対してもGetSecretValue権限を与える必要があります。
今回は次のロールポリシーを利用しました。

ロール名
任意(例:Datadog-Managed-External-Secrets-Role)
許可ポリシー(インラインポリシー)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetSecretValue",
                "secretsmanager:DescribeSecret",
                "secretsmanager:PutSecretValue",
                "secretsmanager:UpdateSecretVersionStage"
            ],
            "Resource": "arn:aws:secretsmanager:ap-northeast-1:XXXXXXXXXXXX:secret:*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "secretsmanager:GetRandomPassword",
            "Resource": "*"
        }
    ]
}

Datadog-Managed-External-Secrets-Role-IAM-Global-06-08-2026_12_48_PM

信頼関係

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "SecretsManagerPrincipalAccess",
            "Effect": "Allow",
            "Principal": {
                "Service": "secretsmanager.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "XXXXXXXXXXXX"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:secretsmanager:ap-northeast-1:XXXXXXXXXXXX:secret:*"
                }
            }
        }
    ]
}

Datadog-Managed-External-Secrets-Role-IAM-Global-06-08-2026_12_49_PM

2. シークレット登録(Datadog 管理者キー)

はじめに、Datadog 管理者キーをシークレットに登録します。

  1. AWS マネジメントコンソールから、「AWS Secrets Manager」サービスのナビゲーションメニュー「シークレット」を選択します。
  2. 「新しいシークレットを保存する」を選択します。
  3. 以下を指定します。
  • シークレットタイプ:マネージド外部シークレット
  • AWS Secrets Manager 統合サードパーティベンダー:Datadog Admin Key
  • Admin API Key:管理者 API キーの値
  • Admin API Key ID:管理者 API キーの KeyID(UUID)
  • Admin Application Key:管理者アプリケーションキーの値
  • Admin Application Key ID:管理者アプリケーションキーの KeyID(UUID)
  • Service Account ID: Datadog サービスアカウント ID(UUID)
  • Datadog Site:サイト名(例:datadoghq.com)
    new-secret-admin1
  1. 任意のシークレット名(例:Datadog-Admin-Managed-Secrets)を指定します
    new-secret-admin2

  2. ローテーションスケジュールと作成したロールを指定し、シークレットを登録します。
    new-secret-admin3

  3. シークレットが登録されたことを確認します。
    new-secret-admin4-png-1500×895--06-08-2026_01_20_PM

3. シークレット登録(Datadog アプリケーションキー)

続けて、Datadog アプリケーションキーをシークレットに登録します。

  1. 「新しいシークレットを保存する」を選択します。
  2. 以下を指定します。
  • シークレットタイプ:マネージド外部シークレット
  • AWS Secrets Manager 統合サードパーティベンダー:Datadog Application Key
  • Application Key:アプリケーションキーの値
  • Application Key ID:アプリケーションキーの KeyID(UUID)
  • Service Account ID:Datadog サービスアカウント ID(UUID)
    new-secret-applcation1
  1. 任意のシークレット名(例:Datadog-ApplicationKey-Managed-Secrets)を指定します
    new-secret-applcation2

  2. Admin Secret ARN では Datadog 管理者キーのシークレット名を選択します。

  3. ローテーションスケジュールと作成したロールを指定し、シークレットを登録します。
    new-secret-applcation3

  4. シークレットが登録されたことを確認します。
    new-secret-applcation4

4. シークレット登録(Datadog API キー)

続けて、Datadog API キーをシークレットに登録します。

  1. 「新しいシークレットを保存する」を選択します。
  2. 以下を指定します。
  • シークレットタイプ:マネージド外部シークレット
  • AWS Secrets Manager 統合サードパーティベンダー:Datadog API Key
  • API Key:API キーの値
  • API Key ID:API キーの KeyID(UUID)
    new-secret-api1
  1. 任意のシークレット名(例:Datadog-ApiKey-Managed-Secrets)を指定します
    new-secret-api2

  2. Admin Secret ARN では Datadog 管理者キーのシークレット名を選択します。

  3. ローテーションスケジュールと作成したロールを指定し、シークレットを登録します。
    new-secret-api3

  4. シークレットが登録されたことを確認します。
    new-secret-api4

ローテーションしてみた

手動でアプリケーションキーのローテーションを行い、AWS Secret Manager、Datadog 側の動作をそれぞれ確認してみます。

アプリケーションキーのローテーション

  1. AWS マネジメントコンソールから、「AWS Secrets Manager」サービスのナビゲーションメニュー「シークレット」を選択します。

  2. 一覧よりローテーションするシークレットを選択します。

  3. ローテーションタブを選択します。

  4. 「すぐにシークレットをローテーションさせる」を選択し、ローテーションを実行させます。
    rote-1
    しばらくしてから、シークレットがローテーションされているか確認します。

  5. 「バージョン」タブを選択します。

  6. ローテーションに成功すると、2つのバージョンのシークレットが登録されていることが確認できます。

  • ステージングラベル:AWSCURRENT、AWSPENDING
  • ステージングラベル:AWSPREVIOUS
    rote-2

CloudTrail イベント

ローテーションを行うと次の CloudTrail イベントが記録されます。

  • RotateSecret
  • RotationStarted
  • PutSecretValue
  • RotationSucceeded
  • UpdateSecretVersionStage
    trail1

ローテーションに失敗した場合は RotationFailed が記録されます。
原因は errorCode レコードから特定することができます。

Datadog のアプリケーションキー

ローテーションにより作成された新しいアプリケーションキーの状態を見てみます。
ローテーション前のキーは無効化され、新しいキーが作成されていることが確認できます。
新しいキーの名前は次の命名規則となっていました。
aws-sm-app-key-Datadog-ApplicationKey-Managed-Secrets-YYYYMMDD-XXXXXX
new-key-png-1500×881--06-08-2026_01_08_PM

Datadog AuditTrail イベント

Datadog の AuditTrail イベントを見てみます。
アクターはサービスアカウントを絞り込みます。

  • フィルタクエリ例:@evt.actor.type:SERVICE_ACCOUNT

キー作成、無効化のリクエストが行われていることが確認できます。
audit

ハマったところ

うまくローテーションができなかったケースがあったので原因をまとめてみます。

サービスアカウントが異なる

RotationFailed エラーコード

Admin key's serviceAccountId (XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXX) must match the Application key's serviceAccountId (XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXX).

ローテーション対象のアプリケーションキーは管理者アプリケーションキーと同じ Datadog サービスアカウントである必要があります。
権限昇格の観点からサービスアカウントが異なる場合のローテーションはサポートされていません。

管理者キーシークレットに対する権限不足

RotationFailed エラーコード

User: arn:aws:sts::XXXXXXXXXXXX:assumed-role/SecretsManager-ap-northeast-1-DatadogApiKey-1e70ebac-e96e-45/SecretsManager is not authorized to perform: secretsmanager:GetSecretValue on resource: arn:aws:secretsmanager:ap-northeast-1:XXXXXXXXXXXX:secret:Datadog-Admin-Managed-Secrets-RwZLT3 because no identity-based policy allows the secretsmanager:GetSecretValue action (Service: SecretsManager, Status Code: 400, Request ID: XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXX) (SDK Attempt Count: 1)"

シークレットに設定した IAM ロールに対して、管理者キーシークレットに対するGetSecretValue権限の不足が原因でした。
シークレット登録時にデフォルトロールを作成できますが、作成されるポリシーは Condition 条件によりGetSecretValue可能なシークレットタイプを制限しています。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowRotationAccess",
            "Action": [
                "secretsmanager:DescribeSecret",
                "secretsmanager:GetSecretValue",
                "secretsmanager:PutSecretValue",
                "secretsmanager:UpdateSecretVersionStage"
            ],
            "Resource": "arn:aws:secretsmanager:ap-northeast-1:XXXXXXXXXXXX:secret:*",
            "Effect": "Allow",
            "Condition": {
                "StringEquals": {
                    "secretsmanager:resource/Type": "DatadogApiKey"
                }
            }
        },
        {
            "Sid": "AllowPasswordGenerationAccess",
            "Action": [
                "secretsmanager:GetRandomPassword"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}

まとめ

Secrets Manager のマネージド外部シークレットによる Datadog 認証情報の自動ローテーションを試してみました。
個別に Lambda の実装や管理が不要になり、マネージドにローテーションできるのは運用面で嬉しいポイントです。
サービスアカウントによるキー所有や、管理者キーを起点としたローテーションの仕組みを理解しておくとスムーズに導入できると思います。
Datadog の認証情報を定期的にローテーションしたい方は、ぜひマネージド外部シークレットを活用してみてください。

本記事が参考になれば幸いです。

参考

https://aws.amazon.com/about-aws/whats-new/2026/05/secrets-manager-managed-external-secrets-datadog-snowflake/
https://docs.aws.amazon.com/secretsmanager/latest/userguide/mes-partner-DatadogAdminKey.html
https://docs.aws.amazon.com/secretsmanager/latest/userguide/mes-partner-DatadogApiKey.html
https://docs.aws.amazon.com/secretsmanager/latest/userguide/mes-partner-DatadogApplicationKey.html
https://docs.datadoghq.com/account_management/org_settings/service_accounts/

この記事をシェアする

関連記事