AWS Control Tower のアカウントレベルのベースライン継承状態を AWS CLI で確認してみた
はじめに
こんにちは、クラウド事業本部コンサルティング部のいたくらです。
AWS Control Tower の「組織」画面で、OU のベースラインステータスは「有効」なのに、配下のアカウントだけ「更新が利用できます」と表示されるケースに遭遇しました。

本記事では、アカウントレベルの継承状態(child enabled baseline)を AWS CLI で確認する方法と、実際に調査した結果を紹介します。
なお、本記事の検証はランディングゾーンバージョン 3.3、以下のランディングゾーン設定で実施しています。

三行まとめ
- アカウントの継承状態は
list-enabled-baselinesに--include-childrenオプションとparentIdentifiersフィルターを使って確認できる - OU とアカウントの
lastOperationIdentifierが異なる場合、「更新が利用できます」と表示されることがある - 「更新が利用できます」と表示される場合は、OU の再登録で解消できる
前提知識:child enabled baseline とは
AWS Control Tower では、ベースラインは OU 単位で適用され、配下のアカウントはその設定を継承します。
公式ドキュメントには以下のように記載されています。
When you enable a baseline on an OU, that configuration is inherited by the OU's member accounts. Due to the fact of inheritance, we call it a child enabled baseline when we refer to the account.
引用:Types of baselines - AWS Control Tower
OU に適用されたベースラインを「parent enabled baseline」、アカウントが継承したベースラインを「child enabled baseline」と呼ぶようです。
アカウントの継承状態を確認する手順
アカウントの child enabled baseline を確認するには、以下の手順で行います。
Step 1: 全ての enabledbaseline を取得
まず、AWS 環境内の全ての enabledbaseline を取得します。
aws controltower list-enabled-baselines --region <ホームリージョン>
Step 2: 対象 OU の enabledbaseline ARN を特定
Step 1 の結果から、確認したい OU の enabledbaseline ARN を特定します。
targetIdentifier が対象の OU の ARN(arn:aws:organizations::<管理アカウントID>:ou/<組織ID>/<対象のOU ID> 形式)になっている行を探し、その arn フィールドの値を確認します。
{
"arn": "arn:aws:controltower:ap-northeast-1:xxxxxxxxxxxx:enabledbaseline/XXXXYYYYZZZZZ", // ← これを使う
"baselineIdentifier": "arn:aws:controltower:ap-northeast-1::baseline/17BSJV3IGJ2QSGA2",
"baselineVersion": "4.0",
"targetIdentifier": "arn:aws:organizations::<管理アカウントID>:ou/<組織ID>/<対象のOU ID>", // OU の ARN
...
}
Step 3: parentIdentifiers と --include-children で child enabled baseline を取得
Step 2 で特定した enabledbaseline ARN を parentIdentifiers フィルターに指定し、--include-children オプションを付けて実行します。
aws controltower list-enabled-baselines \
--filter "parentIdentifiers=<対象OUのenabledbaseline ARN>" \
--include-children \
--region <ホームリージョン>
これにより、対象 OU 配下のアカウントの継承状態が確認できます。
確認できる情報
Step 3 のコマンドを実行すると、以下の情報が得られます。
| フィールド | 説明 |
|---|---|
| arn | アカウントの child enabled baseline の ARN |
| baselineVersion | 継承しているベースラインのバージョン |
| targetIdentifier | 対象アカウントの ARN |
| parentIdentifier | 親 OU の enabledbaseline ARN |
| driftStatusSummary.types.inheritance.status | 継承ドリフトの状態(IN_SYNC / DRIFTED) |
| statusSummary.lastOperationIdentifier | 最後に適用された操作の識別子 |
実際に調査してみた
事象
以下のように、OU のベースラインステータスは「有効」なのに、Foundational OU 配下のアカウントだけ「更新が利用できます」と表示されていました。

「更新が利用できます」をクリックすると、以下のメッセージが表示されました。

Foundational OU の調査
まず、Foundational OU の enabledbaseline ARN と lastOperationIdentifier を確認しました。
aws controltower list-enabled-baselines \
--filter targetIdentifiers=arn:aws:organizations::xxxxxxxxxxxx:ou/o-aaaaaaaaaa/ou-xxxx-xxxxxxxx \
--region ap-northeast-1
{
"enabledBaselines": [
{
"arn": "arn:aws:controltower:ap-northeast-1:xxxxxxxxxxxx:enabledbaseline/XOTP54HXF0D5VWBSN", // ← これが enabledbaseline ARN
"baselineIdentifier": "arn:aws:controltower:ap-northeast-1::baseline/17BSJV3IGJ2QSGA2",
"baselineVersion": "4.0",
"driftStatusSummary": {
"types": {
"inheritance": {
"status": "IN_SYNC"
}
}
},
"targetIdentifier": "arn:aws:organizations::xxxxxxxxxxxx:ou/o-aaaaaaaaaa/ou-xxxx-xxxxxxxx",
"statusSummary": {
"status": "SUCCEEDED",
"lastOperationIdentifier": "eca90736-85f1-48d3-b747-11ab8cdeec7c" // ← これが lastOperationIdentifier
}
}
]
}
~ $
結果から、
- Foundational OU の enabledbaseline ARN:
arn:aws:controltower:ap-northeast-1:xxxxxxxxxxxx:enabledbaseline/XOTP54HXF0D5VWBSN - lastOperationIdentifier:
eca90736-85f1-48d3-b747-11ab8cdeec7c
であることが確認できました。
次に、この enabledbaseline ARN を使って配下のアカウントの継承状態を確認しました。
aws controltower list-enabled-baselines \
--filter "parentIdentifiers=arn:aws:controltower:ap-northeast-1:xxxxxxxxxxxx:enabledbaseline/XOTP54HXF0D5VWBSN" \
--include-children \
--region ap-northeast-1
{
"enabledBaselines": [
{
"arn": "arn:aws:controltower:ap-northeast-1:xxxxxxxxxxxx:enabledbaseline/XAPJ2XLMQPD5VWB54",
"baselineIdentifier": "arn:aws:controltower:ap-northeast-1::baseline/17BSJV3IGJ2QSGA2",
"baselineVersion": "4.0",
"driftStatusSummary": {
"types": {
"inheritance": {
"status": "IN_SYNC"
}
}
},
"targetIdentifier": "arn:aws:organizations::xxxxxxxxxxxx:account/o-aaaaaaaaaa/yyyyyyyyyyyy", // Infra アカウント
"parentIdentifier": "arn:aws:controltower:ap-northeast-1:xxxxxxxxxxxx:enabledbaseline/XOTP54HXF0D5VWBSN",
"statusSummary": {
"status": "SUCCEEDED",
"lastOperationIdentifier": "61f5824f-1b8d-4b64-808c-cd1768b83a7f"
}
},
{
"arn": "arn:aws:controltower:ap-northeast-1:xxxxxxxxxxxx:enabledbaseline/XAPQ8F7LX1D5VWB4K",
"baselineIdentifier": "arn:aws:controltower:ap-northeast-1::baseline/17BSJV3IGJ2QSGA2",
"baselineVersion": "4.0",
"driftStatusSummary": {
"types": {
"inheritance": {
"status": "IN_SYNC"
}
}
},
"targetIdentifier": "arn:aws:organizations::xxxxxxxxxxxx:account/o-aaaaaaaaaa/zzzzzzzzzzzz", // delegated-admin アカウント
"parentIdentifier": "arn:aws:controltower:ap-northeast-1:xxxxxxxxxxxx:enabledbaseline/XOTP54HXF0D5VWBSN",
"statusSummary": {
"status": "SUCCEEDED",
"lastOperationIdentifier": "d32a87ba-aac1-49d5-be2a-02d261e5985f"
}
}
]
}
inheritance.status は IN_SYNC で、継承ドリフトは発生していませんでした。
しかし、Foundational OU の lastOperationIdentifier(eca90736-85f1-48d3-b747-11ab8cdeec7c)と、
Infra アカウントの lastOperationIdentifier(61f5824f-...)や
delegated-admin アカウント のlastOperationIdentifier(d32a87ba-...)が異なることがわかりました。
Dev OU の調査
比較のため、「有効」と表示されている Dev OU 配下のアカウントも同様に確認しました。

まず、Dev OU の enabledbaseline ARN と lastOperationIdentifier を確認しました。
同様のコマンドで確認すると、以下の結果でした。
- Dev OU の enabledbaseline ARN:
arn:aws:controltower:ap-northeast-1:xxxxxxxxxxxx:enabledbaseline/XOJ1PEERXGD5FN1G7 - lastOperationIdentifier:
3d4a165a-3899-4acb-bb13-9a92fb7fc585
enabledbaseline ARN を使って Dev OU 配下のアカウントの継承状態を確認しました。
{
"enabledBaselines": [
{
"arn": "arn:aws:controltower:ap-northeast-1:xxxxxxxxxxxx:enabledbaseline/XALM9ACDZ3D5G7WL6",
"baselineIdentifier": "arn:aws:controltower:ap-northeast-1::baseline/17BSJV3IGJ2QSGA2",
"baselineVersion": "4.0",
"driftStatusSummary": {
"types": {
"inheritance": {
"status": "IN_SYNC"
}
}
},
"targetIdentifier": "arn:aws:organizations::xxxxxxxxxxxx:account/o-aaaaaaaaaa/bbbbbbbbbbbb", // Member01 アカウント
"parentIdentifier": "arn:aws:controltower:ap-northeast-1:xxxxxxxxxxxx:enabledbaseline/XOJ1PEERXGD5FN1G7",
"statusSummary": {
"status": "SUCCEEDED",
"lastOperationIdentifier": "3d4a165a-3899-4acb-bb13-9a92fb7fc585"
}
}
]
}
Dev OU の lastOperationIdentifier(3d4a165a-3899-4acb-bb13-9a92fb7fc585)と、
Member01 アカウントの lastOperationIdentifier(3d4a165a-...)が一致していました。
比較結果
| 項目 | Foundational OU | Dev OU |
|---|---|---|
| OU の lastOperationIdentifier | eca90736-... |
3d4a165a-... |
| アカウントの lastOperationIdentifier | 61f5824f-...(異なる) |
3d4a165a-...(同じ) |
| コンソール表示 | 更新が利用できます | 有効 |
原因
lastOperationIdentifier の違いから、以下のことがわかりました。
- Dev OU:OU のベースライン適用時にアカウントも同時に更新された
- Foundational OU:アカウントが OU のベースライン更新とは別のタイミングで登録・更新された
lastOperationIdentifier が異なることから、Foundational OU 配下のアカウントは OU のベースライン更新とは別のタイミングで登録・更新されたと考えられます。このため、コンソールでは「更新が利用できます」と表示されていました。
解決方法
コンソールのメッセージ通り、Foundational OU を再登録することで、配下のアカウントのリソースが最新のベースラインバージョンに同期され、「AWS Control Tower baseline status = 有効」となります。

まとめ
- アカウントの継承状態(child enabled baseline)は、
list-enabled-baselinesに--include-childrenオプションとparentIdentifiersフィルターを使って確認できる - OU とアカウントの
lastOperationIdentifierを比較することで、アカウントのリソースが OU のベースライン更新と同期しているかどうかを判断できる inheritance.statusがIN_SYNCでも、lastOperationIdentifierが異なる場合は「更新が利用できます」と表示されることがある- この状態を解消するには、OU の再登録を行う(OU 移動に起因する場合はアカウント自動登録機能を有効にしておけば回避できると思います)
この記事がどなたかのお役に立てれば幸いです。
以上、クラウド事業本部コンサルティング部のいたくら(@itkr2305)でした!






