Claude Media
Claude CMEKのcmek_key_disabledエラー — 3種の原因と直し方

Claude CMEKのcmek_key_disabledエラー — 3種の原因と直し方

CMEKのcmek_key_disabled・cmek_key_network_blocked・cmek_key_unreachableの原因と、KMS別の検証失敗、CloudTrailの想定内エラーの見分け方をまとめます。

CMEK(顧客管理暗号鍵)を有効にしたワークスペースで、リクエストが突然失敗することがあります。エラーコードは3種類です。cmek_key_disabled と cmek_key_network_blocked は400、cmek_key_unreachable は503で返ります。

この3つは原因も直し方も違います。400の2つは自分のKMS側の設定を直す問題で、503はリトライで足りる可能性があります。コードを見分けるだけで、最初に触る場所が決まります。

コードステータス最初に疑う場所リトライで直るか
cmek_key_disabledステータス400最初に疑う場所鍵の状態、Anthropicへのアクセス権、キーポリシーリトライで直るか直らない(原因の修正が先)
cmek_key_network_blockedステータス400最初に疑う場所KMSのファイアウォール、IP許可リストリトライで直るか直らない(許可設定が先)
cmek_key_unreachableステータス503最初に疑う場所KMS側の障害、鍵の可用性リトライで直るか直る場合がある

設定手順そのものはAWS KMSの設定、Google Cloud KMSの設定、Azure Key Vaultの設定にあります。ここではエラーから原因をたどる側に絞ります。

cmek_key_disabledは4つの原因を順に確かめる

メッセージは「Customer-managed encryption key is disabled or revoked. Re-enable the key to restore access.」です。鍵管理サービスがAnthropicの呼び出しを拒否したときに出ます。名前は「無効」ですが、鍵を無効にした場合だけではありません。

原因は次の順で確かめます。

手順

cmek_key_disabledの切り分け順

  1. 1

    鍵が無効になっていないか

    KMS側で鍵の状態を見ます。無効化されていれば、再び有効にします。

  2. 2

    Anthropicのアクセス権が外れていないか

    Consoleの設定画面に、Anthropicが必要とするアクセスが表示されます。キーポリシーやIAMの変更で、その権限が消えていないかを比べます。

  3. 3

    AWS KMSでワークスペースが条件に載っているか

    キーポリシーにワークスペースを列挙する条件がある場合、このワークスペースが漏れていると拒否されます。

  4. 4

    AWS KMSでIP条件が塞いでいないか

    キーポリシーのIP条件が、Anthropicの送信元IPアドレスを弾いていないかを確かめます。

1つ目と2つ目はどのKMSでも共通です。3つ目と4つ目はAWS KMS固有の原因なので、Google Cloud KMSやAzure Key Vaultでは該当しません。

直したあとに残る2つの制約

原因を直してアクセスが戻っても、失敗したリクエストが自動で再実行されることはありません。無効だった間に失敗した分は、呼び出し側で再送します。

もう1つは保持期間です。鍵が無効でも、データの保持期間は止まりません。無効にしている間も時計は進みます。

変更が反映されるまで最大1時間かかる

鍵の無効化やAnthropicのアクセス権の取り消しは、反映まで最大1時間かかります。その間に処理中のリクエストは成功することがあります。

逆に言えば、権限を直した直後に同じエラーが残っていても、すぐに別の原因を疑う必要はありません。再度の失敗が続くなら、上の4つを改めて見直します。

cmek_key_network_blockedは鍵が無事でも出る

メッセージは、KMSのネットワークアクセス制御(ファイアウォールやIP許可リスト)でリクエストが遮られたことを示します。ステータスは400です。

鍵そのものは正常な場合があります。対処は、Anthropicが公開している送信元IPアドレスを、KMS側のネットワークルールで許可することです。設定が正しく見えるのに続く場合は、Anthropicのサポートに連絡する案内になっています。

cmek_key_disabled の4つ目(AWS KMSのIP条件)と近い原因ですが、見ている層が違います。キーポリシーの条件で弾かれるなら前者、KMSへの経路自体が遮られるなら後者です。

cmek_key_unreachableはリトライが基本

メッセージは「The workspace's customer-managed encryption key could not be reached.」で始まり、少し待って再試行するよう案内します。503です。

Anthropicが鍵に到達できないときに出ます。たとえば、KMS側の障害のあいだです。鍵を使ってデータを保存するリクエストが対象で、Claude Enterpriseではチャットや音声モードのメッセージも含まれます。

Messages APIでは呼び出し側でリトライします。Message Batches APIは、鍵が使えるようになるかバッチが期限切れになるまで、自動で再試行します。

import time
import anthropic
 
client = anthropic.Anthropic()
 
def create_with_retry(**kwargs):
    for attempt in range(5):
        try:
            return client.messages.create(**kwargs)
        except anthropic.InternalServerError:
            # 5xx 系(cmek_key_unreachable を含む)だけ待って再試行する
            time.sleep(2 ** attempt)
    raise RuntimeError("鍵が復旧しません。KMS側の状態を確認してください")

上のコードは書き方の一例です。400のコードは再試行しても結果が変わらないので、BadRequestError は捕まえずにそのまま上げ、原因の修正に回します。5回待っても直らないときは、KMSの鍵が利用可能かを自分で見ます。

検証が失敗するときの原因をKMS別に見る

セットアップ時のエラーは別です。ConsoleのVerify、claude.aiのAdd、Admin APIのvalidate呼び出しは、同じ検証を走らせます。ConsoleではConnection failedと表示されます。

AWS KMS

原因直し方
組織IDが違う直し方org_uuid 条件に、org_ を除いたUUIDで自分のAnthropic組織IDを書く
ポリシーにワークスペースが無い直し方compartment_uuid 条件に、鍵を紐づける各ワークスペースのコンパートメントIDを並べる
IAM経由でアクセスを渡している直し方Anthropicのロールへの権限は、キーポリシー自体に書く

現在のキーポリシーは、次のコマンドで出力できます。

aws kms get-key-policy \
  --region <REGION> \
  --key-id <KEY_ARN> \
  --policy-name default

すでにデータを守っている鍵のポリシーを置き換えるときは、既存データの復号用に、次のステートメントを足します。条件には、その鍵が現在または過去に紐づいたすべてのワークスペースのコンパートメントIDを入れます。

{
  "Sid": "AllowAnthropicCMEKDecryptExistingData",
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::915198916910:role/anthropic-cmek-client-us"
  },
  "Action": "kms:Decrypt",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:EncryptionContext:anthropic:compartment_uuid": ["<COMPARTMENT_UUID>"]
    }
  }
}

Google Cloud KMS

原因直し方
組織ラベルが違う直し方鍵に組織ラベルを付け、Anthropicの組織IDを小文字で書く
ドメイン制限付き共有直し方この組織ポリシーがAnthropicのサービスアカウントへの付与を止めるため、例外を追加する
鍵バージョンが無効または破棄済み直し方プライマリバージョンを有効にする

付与の状態は、次のコマンドで確認できます。

gcloud kms keys get-iam-policy <your-key-name> \
  --project=<your-project-id> \
  --location=<region> \
  --keyring=<your-keyring-name>

Azure Key Vault

原因直し方
組織タグが違う直し方鍵の現在のバージョンに組織タグを付ける
ロール割り当てがまだ有効でない直し方新しい割り当ては反映に数分かかるので、待ってから再試行する
Vaultのネットワークルールが遮っている直し方Anthropicが必要とするVault設定と照らし合わせる

Azureの2つ目は、直したつもりで失敗が続く典型です。設定が合っていても、数分は結果が変わりません。

Claude Platform on AWSにはVerifyがない

Claude Platform on AWSにはVerifyの手順がありません。鍵の問題は、ワークスペースに紐づけるときに初めて表に出ます。

原因直し方
キーポリシーの不一致直し方get-key-policy の出力を、セットアップページのポリシーと見比べる
条件の不一致直し方EncryptionContext や aws:SourceArn の条件に、このワークスペースを含める
鍵の状態や場所直し方鍵が有効で、単一リージョンで、ワークスペースと同じAWSアカウントとリージョンにあること
権限不足直し方操作するプリンシパルに kms:DescribeKey、kms:Encrypt、kms:Decrypt が要る

それでも失敗するときは、鍵があるアカウントのCloudTrailで、拒否された kms: イベントを探します。呼び出したプリンシパルと、暗号操作では暗号化コンテキストが記録されています。直したらSaveを押し直します。

紐づけや追加が断られる5つのパターン

セットアップの途中で、鍵そのものではなくワークスペースや組織の状態で止まることがあります。

  • ワークスペースがデータを保持しない: 「CMEK keys can only be attached to workspaces in this organization that have inference data retention enabled.」と出ます。組織がZero data retention(ZDR)だと、鍵を付けられるのは保持するワークスペースだけです。先にStandard data retentionへ切り替えます。
  • Encryption keyの設定項目が無い: 保持するワークスペースにしか項目が出ません。ZDR組織の既定のワークスペースは切り替えられないので、別のワークスペースを使います。
  • Encryption keysのセクションが無い: Consoleのデータ保持ページで、上部のドロップダウンからOrganizationを選びます。それでも無ければ、自分のロールにその権限がないか、組織でCMEKが有効になっていません。有効化はAnthropicのアカウントチームが行います。
  • ワークスペースにすでに鍵がある: 「This workspace already has a different external key attached.」と出ます。鍵の差し替えはできないので、新しいワークスペースを作ります。
  • claude.aiで鍵を追加できない: 「The encryption key couldn't be added.」は、鍵の検証が失敗したことを示します。上のKMS別の表で原因を探し、Add keyを押し直します。ダイアログには前回の入力が残っています。

CloudTrailの拒否ログは想定内のものがある

AWS KMSでは、検証のたびにCloudTrailへ「access denied」が並びます。Claude PlatformとClaude Enterpriseでは、鍵を検証するとき、ワークスペースに紐づけるとき、claude.aiで鍵を表示するときに、Anthropicが鍵を確認します。この確認1回ごとに、想定内の拒否エラーが4件記録されます。

障害と区別するには、次の3つをすべて満たすイベントだけを除外します。

  • requestParameters.encryptionContext.associatedData が Y21lay12YWxpZGF0aW9u
  • userIdentity.accountId が 915198916910
  • resources.ARN が arn:aws:kms:<REGION>:<AWS_ACCOUNT_ID>:key/<KEY_ID>

1つ目だけでは足りません。呼び出し元は誰でもこの値を設定できるため、アカウントIDと鍵のARNも合わせて条件にします。アラートの除外ルールを作るときは、3条件のAND一致にします。

機能が止まったときは別の可能性もある

エラーコードが出ず、特定の機能だけが動かなくなったなら、CMEKが無効にする機能に当たっているのかもしれません。Claude PlatformとClaude Enterpriseそれぞれに、無効になる機能と変わる機能の一覧があります。一覧の読み方はCMEKの機能制限にまとめています。

ここまでで該当がなければ、Anthropicのアカウントチームへの連絡が案内されています。仕組みの全体像はCMEKとはが出発点です。

この記事を共有:XはてブLinkedIn