Control Tower環境でBedrockを利用するならOU単位のリージョン拒否コントロールを利用しよう

Control Tower環境でBedrockを利用するならOU単位のリージョン拒否コントロールを利用しよう

Bedrockのクロスリージョン推論がControl Towerのリージョン拒否コントロールと競合する問題について、OU単位のリージョン拒否コントロールとカスタムSCPを併用した解決策を紹介します。
2026.05.26

こんにちは!クラウド事業本部の吉田です。

Control Tower環境でAmazon Bedrockのクロスリージョン推論を利用しようとしたところ、リージョン拒否SCPによってアクセスが拒否される問題に遭遇しました。

この記事では、OU単位のマネージドリージョン拒否コントロール(CT.MULTISERVICE.PV.1)とカスタムSCPを併用することで、リージョン拒否設定を維持しながらBedrockのクロスリージョン推論を利用する方法を紹介します。

発生した問題

SageMaker Unified StudioからBedrockを利用しようとした際、以下のようなエラーが発生しました。

User: arn:aws:sts::123456789012:assumed-role/AmazonSageMakerBedrockModelConsumptionRole-xxxx/xxxx
is not authorized to perform: bedrock:InvokeModelWithResponseStream on resource:
arn:aws:bedrock:us-east-2::foundation-model/anthropic.claude-sonnet-4-5-20250929-v1:0
with an explicit deny in a service control policy

エラーメッセージを見ると、us-east-2(オハイオ)リージョンへのアクセスがSCPによって明示的に拒否されています。

クロスリージョン推論の仕組み

Bedrockのクロスリージョン推論は、リクエストを複数のリージョンに自動でルーティングすることで、可用性の向上とスループットの最大化を実現する機能です。※1

グローバル推論プロファイルを使用した場合、ルーティング先のリージョンは利用者が明示的に指定できません。
AWSが自動的にルーティング先を決定するため、管理外リージョンへのAPIコールが発生します。

今回の環境では、ランディングゾーンレベルでリージョン拒否設定を有効化しており、管理リージョン(東京、大阪、バージニア北部、ロンドン)以外へのアクセスを制限していました。
そのため、クロスリージョン推論がルーティングしようとしたオハイオリージョンへのアクセスがSCPで拒否されたというわけです。

リージョン拒否コントロールの種類

Control Towerでは、管理リージョン以外でのAPIアクションを拒否する「リージョン拒否コントロール」を設定できます。
リージョン拒否コントロールには2種類あります。※2

種類 適用範囲 特徴
ランディングゾーンリージョン拒否コントロール Control Tower管理下すべて シンプルだが例外設定ができない
OU単位のリージョン拒否コントロール OU単位 例外APIや例外IAMプリンシパルを設定可能

今回の問題は、ランディングゾーンリージョン拒否コントロールを利用していたことが原因です。
ランディングゾーンリージョン拒否コントロールでは例外設定ができないため、クロスリージョン推論のようなケースに対応できません。

この問題を解決するには、例外APIを設定できるOU単位のリージョン拒否コントロール(CT.MULTISERVICE.PV.1)への移行が必要です。※3

対応方針の検討

この問題に対して、2つの方式を検討しました。

方式1: OU分離方式

Bedrock利用アカウント専用のOUを作成し、そのOUにのみExemptedActionsを設定したCT.MULTISERVICE.PV.1を適用する方式です。

この方式には以下のデメリットがあります。

  • OUごとにOU単位リージョン拒否コントロールの設定が異なり、管理が煩雑になる
  • 後からBedrock利用が必要になったアカウントはOU移動が発生する
  • CT.MULTISERVICE.PV.1はOUに対してのみ適用でき、アカウント単位での設定ができない

方式2: OU単位リージョン拒否コントロール + カスタムSCP併用方式(採用)

第一階層のOUに、OU単位リージョン拒否コントロールとカスタムSCPを適用する方式です。

  • OU単位リージョン拒否コントロール(CT.MULTISERVICE.PV.1)
    • ExemptedActionsにBedrock推論アクションを追加
  • カスタムSCP
    • Bedrock推論を許可するアカウントをリストで管理

この方式のメリットは以下のとおりです。

  • OU構成を変更せずに済む
  • アカウント追加時はカスタムSCPのリストに追加するだけ
  • AWSがOU単位リージョン拒否コントロールの例外アクションを更新した場合、自動で反映される

今回は方式2を採用しました。

解決策

OU単位マネージドリージョン拒否コントロール

Control Towerのコンソールから、OU単位リージョン拒否コントロール(CT.MULTISERVICE.PV.1)を設定します。

ExemptedActionsに以下のBedrock推論アクションを追加します。

  • bedrock:InvokeModel
  • bedrock:InvokeModelWithResponseStream

この設定により、OU単位リージョン拒否コントロールのNotAction(例外アクション)にBedrockの推論アクションが追加され、リージョン拒否の対象外となります。

カスタムSCP

OU単位リージョン拒否コントロールだけでは、すべてのアカウントでBedrock推論が許可されてしまいます。
特定のアカウントのみにBedrock推論を許可するため、以下のカスタムSCPを追加で適用します。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyBedrockInferenceExceptAllowRegionSpecificAccounts",
      "Effect": "Deny",
      "Action": [
        "bedrock:InvokeModel",
        "bedrock:InvokeModelWithResponseStream"
      ],
      "Resource": "*",
      "Condition": {
        "StringNotEquals": {
          "aws:RequestedRegion": [
            "ap-northeast-1",
            "ap-northeast-3",
            "us-east-1",
            "eu-west-2"
          ],
          "aws:PrincipalAccount": [
            "<許可するアカウントID>",
            "<許可するアカウントID>"
          ]
        }
      }
    }
  ]
}

SCPのConditionは複数のキーがAND条件で評価されます。
このステートメントでは以下のように動作します。

  • 許可リージョンからのアクセス → Denyが適用されない(許可)
  • 指定アカウントからのアクセス → Denyが適用されない(許可)
  • 許可リージョン以外 かつ 指定アカウント以外 → Denyが適用される(拒否)

新たにBedrockを利用したいアカウントが出てきた場合は、aws:PrincipalAccountのリストにアカウントIDを追加する運用となります。

セキュリティサービスの考慮点

クロスリージョン推論でのみ使用する管理外リージョンに対して、セキュリティサービスを有効化する必要はあるのでしょうか。

結論として、クロスリージョン推論の用途に限定されるリージョンでは、セキュリティサービスの導入・運用は不要と考えます。

理由は以下のとおりです。

  • Config
    • 推論のみの利用ではリソース変更が発生しないため、監視対象がない
  • CloudTrail
    • Bedrock APIコールの履歴は呼び出し元リージョン(東京など)で記録されるため、管理リージョンのCloudTrailで捕捉できる
  • GuardDuty
    • クロスリージョン推論のみを利用する環境に対して有効なユースケースは限定的

また、Control Towerのランディングゾーン管理リージョンを商用リージョン全体に拡張する必要もありません。
現時点でControl Towerにはクロスリージョン推論に関するコントロール(予防・検知)が存在しないため、管理リージョンを拡張しても有効なコントロールが適用されないためです。

将来的に管理外リージョンでリソースを運用する必要が出てきた場合は、その時点でランディングゾーンの対象リージョンを拡張し、セキュリティサービスを有効化する運用でよいでしょう。

さいごに

Control Towerのリージョン拒否設定とBedrockのクロスリージョン推論を両立させる方法を解説しました。

ポイントは、OU単位のマネージドリージョン拒否コントロール(CT.MULTISERVICE.PV.1)とカスタムSCPを併用し、Bedrock推論を許可するアカウントをリストで管理することです。

今後、クロスリージョン推論に限らず、管理外リージョンへのアクセスが必要なサービスが増える可能性があります。
この設計パターンが参考になれば幸いです。

以上、クラウド事業本部の吉田でした!

参考資料

この記事をシェアする

AWSのお困り事はクラスメソッドへ

関連記事