[アップデート] AWS IAM の条件キーを使って、Amazon Bedrock API キーの生成・使用時に特定期間のみ許可できるようになりました

[アップデート] AWS IAM の条件キーを使って、Amazon Bedrock API キーの生成・使用時に特定期間のみ許可できるようになりました

2025.09.06

いわさです。

Amazon Bedrock では API キーを発行し、それを使って Bedrock API 呼び出し時の認証用に使うことができます。

https://dev.classmethod.jp/articles/amazon-bedrock-api-keys-feature-added/

これまで様々な条件の API キーを作成することができたのですが、先日のアップデートで IAM 条件キーがいくつか追加され、より細かいコントロールができるようになりました。

https://aws.amazon.com/about-aws/whats-new/2025/09/aws-api-keys-conditions-govern-amazon-bedrock/

例を挙げると以下のようなことができるようになります。

  • 短期キーの使用を禁止する
  • 長期キーは有効期限 5 日以内のものしか生成できないようにする

使ってみたので紹介します。

使ってみる

まずはそのまま API キーが正常に動作するか確認しておきましょう。
Bedrock コンソールの API keys メニューから短期キー(Short-term API keys)、長期キー(Long-term API keys)の発行が可能です。

image.png

発行されたキーを cURL で使ってみます。モデルは適当に Haiku 3.5 にしました。

% export AWS_BEARER_TOKEN_BEDROCK=hogehoge

% curl -X POST "https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-3-5-haiku-20241022-v1:0/converse" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $AWS_BEARER_TOKEN_BEDROCK" \
  -d '{
    "messages": [
        {
            "role": "user",
            "content": [{"text": "Hello"}]
        }
    ]
  }'
{"metrics":{"latencyMs":1139},"output":{"message":{"content":[{"text":"Hi there! How are you doing today? Is there anything I can help you with?"}],"role":"assistant"}},"stopReason":"end_turn","usage":{"cacheReadInputTokenCount":0,"cacheReadInputTokens":0,"cacheWriteInputTokenCount":0,"cacheWriteInputTokens":0,"inputTokens":8,"outputTokens":21,"totalTokens":29}}

応答を得ることができていますね。

キー使用時のコントロール

では、まずはキー使用時のコントールを行ってみましょう。
API キーを使うとbedrock:CallWithBearerTokenアクションが呼び出されるのですが、今回のアップデートでbedrock:bearerTokenType条件キーを使うことができるようになりました。

956FF393-B109-4191-AF05-13265E3D1F6D.png

値として指定できるのはSHORT_TERMLONG_TERMです。
これを使うことで短期キーのみbedrock:CallWithBearerTokenなどの設定が可能です。

今回は次のようにbedrock:bearerTokenTypeSHORT_TERMの時にbedrock:CallWithBearerTokenを拒否するポリシーを追加してみます。

E6872566-7266-4869-8F8E-2EF21F35FFCA.png

API キーを使って呼び出ししてみると、短期キーが使えなくなりました。

% curl -X POST "https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-3-5-haiku-20241022-v1:0/converse" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $AWS_BEARER_TOKEN_BEDROCK" \
  -d '{
    "messages": [
        {
            "role": "user",
            "content": [{"text": "Hello"}]
        }
    ]
  }'
{"Message":"User: arn:aws:sts::123456789012:assumed-role/cm-iwasa.takahito/cm-iwasa.takahito is not authorized to perform: bedrock:CallWithBearerToken on resource: * with an explicit deny in an identity-based policy"}

この状態で長期キーを使って呼び出してみると、こちらは成功します。なるほど。

% export AWS_BEARER_TOKEN_BEDROCK=fugafuga
% curl -X POST "https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-3-5-haiku-20241022-v1:0/converse" \  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $AWS_BEARER_TOKEN_BEDROCK" \
  -d '{
    "messages": [
        {
            "role": "user",
            "content": [{"text": "Hello"}]
        }
    ]
  }'
{"metrics":{"latencyMs":1430},"output":{"message":{"content":[{"text":"Hi there! How are you doing today? Is there anything I can help you with?"}],"role":"assistant"}},"stopReason":"end_turn","usage":{"cacheReadInputTokenCount":0,"cacheReadInputTokens":0,"cacheWriteInputTokenCount":0,"cacheWriteInputTokens":0,"inputTokens":8,"outputTokens":21,"totalTokens":29}}

長期キー生成時のコントロール

次はキー生成権限をコントロールしてみます。
前提として短期キーの生成は拒否することはできません。短期キーをコントロールしたい場合は前述の方法でキー使用を禁止する方向になると思います。

ここでは長期キー生成時に細かい条件を設定してみます。
長期キーは 1 日から、期限なしあるいは最大 366,000 日まで設定することができます。

image.png

長期キーは許可するが 30 日とかはちょっと嫌だな。みたいな時に、今回追加されたiam:ServiceSpecificCredentialServiceNameiam:ServiceSpecificCredentialAgeDaysを使ってコントロールができます。

6EB8BE76-BEA8-4C3F-B0CF-E121C766B627.png

個別の認証情報を作成できるサービスは Bedrock 以外にもあるのですが、iam:ServiceSpecificCredentialServiceNameを使ってどのサービスを条件にするか指定ができます。
そして、iam:ServiceSpecificCredentialAgeDaysを使って日数の条件を設定することができます。

今回は次のように Bedrock API キー生成時に 5 日より大きい日数の場合は拒否するポリシーを設定してみました。
アクションはiam:CreateServiceSpecificCredentialです。

8C0B8057-7216-48EB-B4A5-C1038AD74EC8.png

API キーを生成してみましょう。有効期限 5 日の場合はこれまでどおり作成することができました。

3C686CD4-7A29-4B98-8CAD-8E2ECD61BEB9.png

有効期限 30 日の場合は次のようにエラーが発生して生成ができませんでした。なるほど。

AD79724C-2DED-4BB9-B46B-7CFF64BCC76F.png

ただし、長期キーの場合は IAM ユーザーが作成される仕組みになっているのですが、IAM ユーザー自体は作成されていました。
確認してみると Bedrock API キーは発行されていなかったので、たしかに長期キーの生成はできていないのですが。

753C1D60-7322-4D71-B4BA-1E2DBCEA928B.png

さいごに

本日は AWS IAM の条件キーを使って、Amazon Bedrock API キーの生成・使用時に特定期間のみ許可できるようになったので使ってみました。

Bedrock API キーに関して、より細かい発行条件・使用条件を設定できるようになりました。
良いですね。これまでよりも認証情報やセキュリティの要件に合わせやすくなったのではないでしょうか。

この記事をシェアする

facebookのロゴhatenaのロゴtwitterのロゴ

© Classmethod, Inc. All rights reserved.