

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# API 金鑰
<a name="api-keys"></a>

您可以輕鬆呼叫 Amazon Bedrock API，方法是產生 Amazon Bedrock API 金鑰，並在向 Amazon Bedrock API 提出請求時使用該金鑰來驗證您的身分。

**注意**  
為了稽核和合規，所有 API 呼叫都會登入 AWS CloudTrail。Amazon Bedrock API 金鑰會以授權標頭的形式傳遞給 API 請求，並且不會被記錄。  
Amazon Bedrock API 金鑰僅限於 [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_Operations_Amazon_Bedrock.html) 和 [Amazon Bedrock 執行時期](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_Operations_Amazon_Bedrock_Runtime.html)動作。您不能將它們用於以下 API 操作：  
[InvokeModelWithBidirectionalStream](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModelWithBidirectionalStream.html)。
[Amazon Bedrock 代理人](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_Operations_Agents_for_Amazon_Bedrock.html)或 [Amazon Bedrock 代理人執行時期](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_Operations_Agents_for_Amazon_Bedrock.html) API 操作。
[Amazon Bedrock 的 Data Automation](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_Operations_Data_Automation_for_Amazon_Bedrock.html) 或 [Amazon Bedrock Data Automation 的執行時期](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_Operations_Runtime_for_Amazon_Bedrock_Data_Automation) API 操作。

Amazon Bedrock 可讓您產生下列類型的 Amazon Bedrock API 金鑰：
+ **短期** – 建立 Amazon Bedrock API 金鑰，其有效期與您的工作階段時長相同 (且不超過 12 小時)。您應該已設定具有使用 Amazon Bedrock 之適當許可的 [IAM 主體](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_identity-management.html#intro-structure-terms)。對於需要定期變更憑證以提高安全性的生產環境，此選項優於長期金鑰。

  短期金鑰具有下列屬性：
  + 有效期限為下列值中較短者：
    + 12 小時
    + 由 IAM 主體產生，用於產生金鑰的工作階段持續時間。
  + 繼承用於產生金鑰之主體所連接的許可。
  + 只能在您產生它的 AWS 區域中使用。
+ **長期** – 建立具有在 Amazon Bedrock 中發出基本 API 請求許可的 Amazon Bedrock API 金鑰。這個簡單的一鍵式選項可讓您快速開始探索 Amazon Bedrock API，而無需了解基礎安全基礎設施或手動設定 AWS Identity and Access Management 許可。如果您是第一次嘗試使用 Amazon Bedrock，您可以嘗試[開始使用 Amazon Bedrock API 金鑰：產生 30 天金鑰並發出您的第一次 API 呼叫](getting-started-api-keys.md)的範例，以獲得建立長期金鑰並開始使用 Amazon Bedrock 的簡易教學課程。
**警告**  
我們強烈建議限縮將 Amazon Bedrock API 金鑰用於探索 Amazon Bedrock 的用途。當您準備好將 Amazon Bedrock 納入具有更高安全需求的應用程式時，應該切換到短期憑證。如需詳細資訊，請參閱《IAM 使用者指南》中的[長期存取金鑰的替代方案](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds-programmatic-access.html#security-creds-alternatives-to-long-term-access-keys)。

選取主題以進一步了解 Amazon Bedrock API 金鑰。不同類型的 Amazon Bedrock 金鑰有多種選項，也有多種自訂方式。如需如何產生長期 Amazon Bedrock API 金鑰並將其用於探索性用途的快速入門教學課程，請參閱 [開始使用 Amazon Bedrock API 金鑰：產生 30 天金鑰並發出您的第一次 API 呼叫](getting-started-api-keys.md)。

**Topics**
+ [Amazon Bedrock API 金鑰的運作方式](api-keys-how.md)
+ [Amazon Bedrock API 金鑰支援的區域和 AWS 軟體開發套件 (SDKs)](api-keys-supported.md)
+ [產生 Amazon Bedrock API 金鑰](api-keys-generate.md)
+ [使用 Amazon Bedrock API 金鑰](api-keys-use.md)
+ [修改長期和短期 Amazon Bedrock API 金鑰的許可](api-keys-modify.md)
+ [處理已洩露的長期和短期 Amazon Bedrock API 金鑰](api-keys-revoke.md)
+ [控制產生和使用 Amazon Bedrock API 金鑰的許可](api-keys-permissions.md)

# Amazon Bedrock API 金鑰的運作方式
<a name="api-keys-how"></a>

下圖比較了取得憑證的預設流程和使用 Amazon Bedrock API 金鑰的流程：

![\[預設 API 設定流程與使用 Amazon Bedrock API 金鑰的 API 設定流程比較\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/setup/setup-api.png)


圖表中最左側的流程顯示在 AWS IAM Identity Center或 IAM 中建立身分的預設程序。透過此程序，您可以將 IAM 政策連接至該身分，以提供執行 API 操作的許可，然後為該身分產生一般 AWS 憑證。然後，您可以使用憑證在 AWS 中進行 API 呼叫。

藍色節點表示要向 Amazon Bedrock 特別驗證的另外兩個流程。這兩個流程都涉及建立 Amazon Bedrock API 金鑰，您可以使用該金鑰對 Amazon Bedrock 動作進行驗證。您可以產生下列金鑰類型：
+ **短期金鑰** – 允許暫時存取 Amazon Bedrock 的安全選項。

  短期金鑰具有下列屬性：
  + 有效期限為下列值中較短者：
    + 12 小時
    + 由 IAM 主體產生，用於產生金鑰的工作階段持續時間。
  + 繼承用於產生金鑰之主體所連接的許可。
  + 只能在產生金鑰的 AWS 區域中使用。
+ **長期金鑰** – 建議僅用於探索 Amazon Bedrock。您可以設定金鑰的到期時間。產生長期金鑰時，它會在底層建立一個屬於您的 IAM 使用者、連接您選取的 IAM 政策，並將金鑰與使用者建立關聯。產生金鑰後，您可以使用 IAM 服務來[修改 IAM 使用者的許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)。
**警告**  
我們強烈建議限縮將 Amazon Bedrock API 金鑰用於探索 Amazon Bedrock 的用途。當您準備好將 Amazon Bedrock 納入具有更高安全需求的應用程式時，應該切換到短期憑證。如需詳細資訊，請參閱《IAM 使用者指南》中的[長期存取金鑰的替代方案](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds-programmatic-access.html#security-creds-alternatives-to-long-term-access-keys)。

# Amazon Bedrock API 金鑰支援的區域和 AWS 軟體開發套件 (SDKs)
<a name="api-keys-supported"></a>

下列清單顯示支援 API 金鑰 AWS 區域 的 ：
+ ap-northeast-1
+ ap-northeast-2
+ ap-northeast-3
+ ap-south-1
+ ap-south-2
+ ap-southeast-1
+ ap-southeast-2
+ ca-central-1
+ eu-central-1
+ eu-central-2
+ eu-north-1
+ eu-south-1
+ eu-south-2
+ eu-west-1
+ eu-west-2
+ eu-west-3
+ sa-east-1
+ us-east-1
+ us-gov-east-1
+ us-gov-west-1
+ us-west-2

**注意**  
Amazon Bedrock API 金鑰僅限於 [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_Operations_Amazon_Bedrock.html) 和 [Amazon Bedrock 執行時期](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_Operations_Amazon_Bedrock_Runtime.html)動作。您不能將它們用於以下 API 操作：  
[InvokeModelWithBidirectionalStream](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModelWithBidirectionalStream.html)。
[Amazon Bedrock 代理人](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_Operations_Agents_for_Amazon_Bedrock.html)或 [Amazon Bedrock 代理人執行時期](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_Operations_Agents_for_Amazon_Bedrock.html) API 操作。
[Amazon Bedrock 的 Data Automation](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_Operations_Data_Automation_for_Amazon_Bedrock.html) 或 [Amazon Bedrock Data Automation 的執行時期](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_Operations_Runtime_for_Amazon_Bedrock_Data_Automation) API 操作。

下列 AWS SDKs 支援 Amazon Bedrock API 金鑰：
+ Python
+ Javascript
+ Java

# 產生 Amazon Bedrock API 金鑰
<a name="api-keys-generate"></a>

您可以使用AWS 管理主控台或 AWS API 來產生 Amazon Bedrock API 金鑰。我們建議您使用AWS 管理主控台，只需幾個步驟即可輕鬆產生 Amazon Bedrock API 金鑰。

**警告**  
我們強烈建議限縮將 Amazon Bedrock API 金鑰用於探索 Amazon Bedrock 的用途。當您準備好將 Amazon Bedrock 納入具有更高安全需求的應用程式時，應該切換到短期憑證。如需詳細資訊，請參閱《IAM 使用者指南》中的[長期存取金鑰的替代方案](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds-programmatic-access.html#security-creds-alternatives-to-long-term-access-keys)。

**Topics**
+ [使用主控台產生 Amazon Bedrock API 金鑰](#api-keys-generate-console)
+ [使用 API 產生長期 Amazon Bedrock API 金鑰](#api-keys-generate-api-long-term)
+ [使用用戶端程式庫產生短期 Amazon Bedrock API 金鑰](#api-keys-generate-short-term)
+ [設定自動重新整理短期 Amazon Bedrock API 金鑰](#api-keys-refresh-short-term)

## 使用主控台產生 Amazon Bedrock API 金鑰
<a name="api-keys-generate-console"></a>

若要使用主控台產生 Amazon Bedrock API 金鑰，請執行下列動作：

1. 使用具有 Amazon Bedrock 主控台使用許可的 IAM 身分登入AWS 管理主控台。接著，開啟位於 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock) 的 Amazon Bedrock 主控台。

1. 在左側導覽窗格中，選取**API 金鑰**。

1. 產生下列其中一種類型的金鑰：
   + **短期 API 金鑰** – 在**短期 API 金鑰**索引標籤中，選擇**產生短期 API 金鑰**。金鑰會在主控台工作階段過期 (且不超過 12 小時) 時過期，並可讓您呼叫產生該金鑰的 AWS 區域。您可以直接在產生的金鑰中修改區域。
   + **長期 API 金鑰** – 在**長期 API 金鑰**索引標籤中，選擇**產生長期 API 金鑰**。

     1. 在 **API 金鑰過期**區段中，選擇金鑰過期的時間。

     1. (選用) 根據預設，授予核心 Amazon Bedrock API 操作存取權的 [AmazonBedrockLimitedAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonBedrockLimitedAccess) AWS 受管政策會連接到與金鑰相關聯的 IAM 使用者。若要選取更多政策以連接到使用者，請展開**進階許可**區段，然後選取您要新增的政策。

     1. 選擇 **Generate (產生)**。
**警告**  
我們強烈建議限縮將 Amazon Bedrock API 金鑰用於探索 Amazon Bedrock 的用途。當您準備好將 Amazon Bedrock 納入具有更高安全需求的應用程式時，應該切換到短期憑證。如需詳細資訊，請參閱《IAM 使用者指南》中的[長期存取金鑰的替代方案](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds-programmatic-access.html#security-creds-alternatives-to-long-term-access-keys)。



## 使用 API 產生長期 Amazon Bedrock API 金鑰
<a name="api-keys-generate-api-long-term"></a>

在 API 中建立長期 Amazon Bedrock API 金鑰的一般步驟如下：

1. 使用 [IAM 端點](https://docs.aws.amazon.com/general/latest/gr/iam-service.html)傳送 [CreateUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateUser.html) 請求，來建立 IAM 使用者。

1. 透過使用 [IAM 端點](https://docs.aws.amazon.com/general/latest/gr/iam-service.html)傳送 [AttachUserPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AttachUserPolicy.html) 請求，將 [AmazonBedrockLimitedAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonBedrockLimitedAccess) 連接至 IAM 使用者。您可以重複此步驟，視需要將其他受管或自訂政策連接至使用者。
**注意**  
作為最佳實務，強烈建議您將 IAM 政策連接至 IAM 使用者，以限縮 Amazon Bedrock API 金鑰的使用。如需時間限制政策和限制可使用金鑰之 IP 位址的範例，請參閱[透過將內嵌政策連接至 IAM 使用者來控制存取金鑰的使用](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-keys_inline-policy.html)。

1. 使用 [IAM 端點](https://docs.aws.amazon.com/general/latest/gr/iam-service.html)傳送 [CreateServiceSpecificCredential](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceSpecificCredential.html.html) 請求，並將 `bedrock.amazonaws.com` 指定為 `ServiceName`，以產生長期 Amazon Bedrock API 金鑰。
   + 回應中傳回的 `ServiceApiKeyValue` 是您的長期 Amazon Bedrock API 金鑰。
   + 回應中傳回的 `ServiceSpecificCredentialId` 可用來執行與金鑰相關的 API 操作。

若要了解如何產生長期 Amazon Bedrock API 金鑰，請選擇您偏好方法的索引標籤，然後遵循下列步驟：

------
#### [ CLI ]

若要建立長期 Amazon Bedrock API 金鑰，您可以使用 AWS Identity and Access Management API 操作。首先，請確定您已滿足先決條件：

**先決條件**  
請確定您的設定允許 AWS CLI 自動辨識您的 AWS 憑證。若要進一步了解，請參閱[設定 AWS CLI 的設定](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)。

開啟終端機並執行下列命令：

1. 建立 IAM 使用者。您可以將名稱取代為您選擇的其中一個名稱：

   ```
   aws iam create-user --user-name bedrock-api-user
   ```

1. 將 [AmazonBedrockLimitedAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonBedrockLimitedAccess) 連接至使用者。您可以針對要新增至 API 金鑰的任何其他 AWS 受管或自訂政策 ARN，重複此步驟：

   ```
   aws iam attach-user-policy --user-name bedrock-api-user --policy-arn arn:aws:iam::aws:policy/AmazonBedrockLimitedAccess
   ```

1. 建立長期 Amazon Bedrock API 金鑰，以您希望金鑰持續的天數取代 *\$1\$1NUMBER-OF-DAYS\$1*：

   ```
   aws iam create-service-specific-credential \
       --user-name bedrock-api-user \
       --service-name bedrock.amazonaws.com \
       --credential-age-days ${NUMBER-OF-DAYS}
   ```

------
#### [ Python ]

若要建立長期 Amazon Bedrock API 金鑰，您可以使用 AWS Identity and Access Management API 操作。首先，請確定您已滿足先決條件：

**先決條件**  
請確定您的設定允許 Python 自動辨識您的 AWS 憑證。若要進一步了解，請參閱[設定 AWS CLI 的設定](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)。

執行下列指令碼來建立 IAM 使用者、連接執行 Amazon Bedrock 動作的許可，以及產生要與使用者建立關聯的長期 Amazon Bedrock API 金鑰：

```
import boto3
from datetime import datetime, timedelta

# Replace with name for your IAM user
username = "bedrock-api-user"
# Add any AWS-managed or custom policies that you want to the user
bedrock_policies = [
    "arn:aws:iam::aws:policy/AmazonBedrockLimitedAccess",        # Limited access
#    "arn:aws:iam::aws:policy/AmazonBedrockMarketplaceAccess",   # Optional: Access to Amazon Bedrock Marketplace actions
]
# Set the key expiration time to a number of your choice
expiration_time_in_days = 30

iam_client = boto3.client("iam")
    
# Create IAM user
user = iam_client.create_iam_user(username)

# Attach policies to user
for policy_arn in bedrock_policies:
    iam_client.attach_managed_policy(username, policy_arn)

# Create long-term Amazon Bedrock API key and return it
service_credentials = iam_client.create_service_specific_credential(
    user_name=username, 
    service_name="bedrock",
    credential_age_days=expiration_time_in_days
) 
api_key = service_credentials["ServiceApiKeyValue"]
print(api_key)
```

------

## 使用用戶端程式庫產生短期 Amazon Bedrock API 金鑰
<a name="api-keys-generate-short-term"></a>

短期金鑰具有下列屬性：
+ 有效期限為下列值中較短者：
  + 12 小時
  + 由 IAM 主體產生，用於產生金鑰的工作階段持續時間。
+ 繼承用於產生金鑰之主體所連接的許可。
+ 只能在產生金鑰的 AWS 區域中使用。

對於長時間執行的應用程式，[aws-bedrock-token-generator](https://github.com/aws/aws-bedrock-token-generator-js/blob/main/README.md) 用戶端程式庫可以在重新整理憑證時，視需要建立新的 Amazon Bedrock 短期 API 金鑰。如需詳細資訊，請參閱 [設定自動重新整理短期 Amazon Bedrock API 金鑰](#api-keys-refresh-short-term)。

**必要條件**
+ 確保您用來產生金鑰的 IAM 主體已設定適當的許可，可以使用 Amazon Bedrock。如需實驗，您可以將 AWS 受管 [AmazonBedrockLimitedAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonBedrockLimitedAccess) 政策連接至主體。您可以參考 [IAM 中的安全最佳實務](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)來保護您的憑證。
+ 請確定您的設定允許 Python 自動辨識您的 AWS 憑證。擷取憑證的預設方法遵循既定的階層。您可以在 [AWS SDK 和工具標準化憑證提供者](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html)中查看特定 SDK 或工具的階層。
+ 安裝 Amazon Bedrock 字符產生器。選擇您偏好方法的索引標籤，然後遵循下列步驟：

------
#### [ Python ]

開啟終端機並執行下列命令：

```
pip install aws-bedrock-token-generator
```

------
#### [ Javascript ]

開啟終端機並執行下列命令：

```
npm install @aws/bedrock-token-generator
```

------
#### [ Java ]

如果您使用 Maven，請將以下相依性新增到您的 `pom.xml`：

```
<dependency>
    <groupId>software.amazon.bedrock</groupId>
    <artifactId>aws-bedrock-token-generator</artifactId>
    <version>1.1.0</version>
</dependency>
```

如果您使用 Gradle，請將下列項目新增至您的 `build.gradle`：

```
implementation 'software.amazon.bedrock:aws-bedrock-token-generator:1.1.0'
```

------

**範例**  
若要查看如何使用字符產生器以不同語言產生包含預設憑證的短期 Amazon Bedrock API 金鑰的範例，請選擇您偏好方法的索引標籤，然後遵循下列步驟：

------
#### [ Python ]

```
from aws_bedrock_token_generator import provide_token

token = provide_token()
print(f"Token: {token}")
```

------
#### [ Javascript ]

```
import { getTokenProvider } from "@aws/bedrock-token-generator";

// Create a token provider that uses default credentials and region providers.
// You can configure it to use other credential providers.
const provideToken = getTokenProvider();

async function example() {
    
  const token = await provideToken();

  // Use the token for API calls. The token has a default expiration of 12 hour.
  // If the expiresInSeconds parameter is specified during token creation, the 
  // expiration can be configured up to a maximum of 12 hours. However, the actual 
  // token validity period will always be the minimum of the requested expiration 
  // time and the AWS credentials' expiry time
  console.log(`Bearer Token: ${token}`);
}
```

------
#### [ Java ]

```
import software.amazon.bedrock.token.BedrockTokenGenerator;

// Credentials and region will be picked up from the default provider chain
BedrockTokenGenerator tokenGenerator = BedrockTokenGenerator.builder().build();
tokenGenerator.getToken();
```

------

若要查看產生字符時不同使用案例的更多範例，請參閱以下連結：
+ [Python](https://github.com/aws/aws-bedrock-token-generator-python/blob/main/README.md)
+ [Javascript](https://github.com/aws/aws-bedrock-token-generator-js/blob/main/README.md)
+ [Java](https://github.com/aws/aws-bedrock-token-generator-java/blob/main/README.md)

## 設定自動重新整理短期 Amazon Bedrock API 金鑰
<a name="api-keys-refresh-short-term"></a>

您可以在 `aws-bedrock-token-generator` 套件的協助下建立指令碼，以程式設計方式在目前金鑰過期時重新產生新的短期金鑰。首先，請確定您已滿足[使用用戶端程式庫產生短期 Amazon Bedrock API 金鑰](#api-keys-generate-short-term)的先決條件。若要查看擷取字符並提出 Converse 請求的範例指令碼，請選擇您偏好方法的標籤，然後遵循以下步驟：

------
#### [ Python ]

```
from aws_bedrock_token_generator import provide_token
import requests

def get_new_token():
    url = "https://bedrock-runtime.us-west-2.amazonaws.com/model/us.anthropic.claude-3-5-haiku-20241022-v1:0/converse"
    payload = {
        "messages": [
            {
                "role": "user",
                "content": [{"text": "Hello"}]
            }
        ]
    }

    # Create a token provider that uses default credentials and region providers.
    # You can configure it to use other credential providers.
    # https://github.com/aws/aws-bedrock-token-generator-python/blob/main/README.md
    # It can be used for each API call as it is inexpensive.
    token = provide_token()

    headers = {
        "Content-Type": "application/json",
        "Authorization": f"Bearer {token}"
    }

    response = requests.post(url, headers=headers, json=payload)
    print(response.json())

if __name__ == "__main__":
    get_new_token()
```

------
#### [ Javascript ]

```
import { getTokenProvider } from "@aws/bedrock-token-generator";

// Create a token provider that uses default credentials and region providers.
// You can configure it to use other credential providers.
// https://github.com/aws/aws-bedrock-token-generator-js/blob/main/README.md
// This can be created just once. Use await provideToken() to fetch the token
const provideToken = getTokenProvider();

async function example() {
    const url = "https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-3-5-haiku-20241022-v1:0/converse";
    const payload = {
        messages: [
            {
                role: "user",
                content: [{ text: "Hello" }]
            }
        ]
    };
    const headers = {
        "Content-Type": "application/json",
        // provideToken retrieves a valid token. It can be used for each API call as it is inexpensive.
        "Authorization": `Bearer ${await provideToken()}`
    };
    await fetch(url, {
        method: 'POST',
        headers: headers,
        body: JSON.stringify(payload)
    })
}
```

------
#### [ Java ]

```
package com.amazon.bedrocktoken;

import software.amazon.bedrock.token.BedrockTokenGenerator;

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class GetNewToken {
    public static void main(String[] args) throws Exception {
        // Use default credentials and region from environment/profile chain
        // Create a token generator that uses default credentials and region providers.
        // You can configure it to use other credential providers.
        // https://github.com/aws/aws-bedrock-token-generator-java/blob/main/README.md
        BedrockTokenGenerator tokenGenerator = BedrockTokenGenerator.builder().build();

        // getToken() retrieves a valid token. It can be used for each API call as it is inexpensive.
        String token = tokenGenerator.getToken();

        String url = "https://bedrock-runtime.us-west-2.amazonaws.com/model/us.anthropic.claude-3-5-haiku-20241022-v1:0/converse";
        String payload = "{\n" +
                "    \"messages\": [\n" +
                "        {\n" +
                "            \"role\": \"user\",\n" +
                "            \"content\": [{ \"text\": \"Hello\" }]\n" +
                "        }\n" +
                "    ]\n" +
                "}";

        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create(url))
            .header("Content-Type", "application/json")
            .header("Authorization", "Bearer " + token)
            .POST(HttpRequest.BodyPublishers.ofString(payload))
            .build();

        HttpClient client = HttpClient.newHttpClient();
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
```

------

# 使用 Amazon Bedrock API 金鑰
<a name="api-keys-use"></a>

您可以透過下列方式使用您的 Amazon Bedrock API 金鑰：
+ **將其設定為環境變數** – Amazon Bedrock 服務可識別環境變數 `AWS_BEARER_TOKEN_BEDROCK`，您有下列選項可設定金鑰：
  + 開啟終端機進行設定：
    + **MacOS/Linux**

      ```
      export AWS_BEARER_TOKEN_BEDROCK=${api-key}
      ```
    + **Windows**：

      ```
      setx AWS_BEARER_TOKEN_BEDROCK "${api-key}"
      ```
  + 在提出 API 請求之前，在程式碼中將其設定為環境變數。例如，您可以在提出請求之前新增下列幾行：
    + **Python**

      ```
      import os                      
      os.environ['AWS_BEARER_TOKEN_BEDROCK'] = "${api-key}"
      ```
+ **在請求中指定** – 您可以使用下列方式，在授權標頭中包含 Amazon Bedrock API 金鑰 (以實際值取代 *\$1AWS\$1BEARER\$1TOKEN\$1BEDROCK*)：
  + **在直接 HTTP 請求中** – 包含下列項目做為授權標頭：

    ```
    Authorization: Bearer $AWS_BEARER_TOKEN_BEDROCK
    ```
  + **作為支援 SDK 中的參數** – 設定用戶端時，在參數中指定值。例如，使用 [OpenAI Python SDK](https://github.com/openai/openai-python?tab=readme-ov-file#usage) 設定用戶端時，您可以在 `api_key` 欄位中指定它。

**注意**  
Amazon Bedrock API 金鑰僅限於 [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_Operations_Amazon_Bedrock.html) 和 [Amazon Bedrock 執行時期](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_Operations_Amazon_Bedrock_Runtime.html)動作。您不能將它們用於以下 API 操作：  
[InvokeModelWithBidirectionalStream](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModelWithBidirectionalStream.html)。
[Amazon Bedrock 代理程式](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_Operations_Agents_for_Amazon_Bedrock.html)或 [Amazon Bedrock 代理程式執行時期](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_Operations_Agents_for_Amazon_Bedrock.html) API 操作。
[Amazon Bedrock 的 Data Automation](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_Operations_Data_Automation_for_Amazon_Bedrock.html) 或 [Amazon Bedrock Data Automation 的執行時期](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_Operations_Runtime_for_Amazon_Bedrock_Data_Automation) API 操作。

若要查看使用 API 金鑰傳送 [Converse](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Converse.html) 請求以產生回應的範例，請選擇您偏好方法的索引標籤，然後遵循以下步驟：

------
#### [ Python ]

下列範例顯示如何使用 適用於 Python (Boto3) 的 AWS SDK 傳送 API 請求。如果您尚未將 API 金鑰設定為 `AWS_BEARER_TOKEN_BEDROCK` 環境變數，請在下列程式碼中指定它來取代 *\$1\$1api-key\$1*：

```
import os
import boto3
                        
# If you already set the API key as an environment variable, you can comment this line out                        
os.environ['AWS_BEARER_TOKEN_BEDROCK'] = "${api-key}"

# Create an Amazon Bedrock client
client = boto3.client(
    service_name="bedrock-runtime",
    region_name="us-east-1" # If you've configured a default region, you can omit this line
)

# Define the model and message
model_id = "us.anthropic.claude-3-5-haiku-20241022-v1:0"
messages = [{"role": "user", "content": [{"text": "Hello"}]}]

response = client.converse(
    modelId=model_id,
    messages=messages,
)
```

------
#### [ HTTP Client (requests package in Python) ]

**先決條件：**開啟終端機並執行下列命令來安裝 `requests` 套件：

```
python3 -m pip install requests
```

下列範例示範如何使用 HTTP 用戶端直接傳送 API 請求。在標頭中指定 *\$1\$1api-key\$1*。

```
import requests

url = "https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-3-5-haiku-20241022-v1:0/converse"

payload = {
    "messages": [
        {
            "role": "user",
            "content": [{"text": "Hello"}]
        }
    ]
}

headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer ${api-key}"
}

response = requests.request("POST", url, json=payload, headers=headers)

print(response.text)
```

------
#### [ HTTP request using cURL ]

下列範例示範如何使用 cURL 直接傳送 API 請求。如果您未將 API 金鑰設定為 AWS\$1BEARER\$1TOKEN\$1BEDROCK 環境變數，則必須將範例中的 `$AWS_BEARER_TOKEN_BEDROCK` 取代為金鑰的常值。

```
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"}]
        }
    ]
  }'
```

------

# 修改長期和短期 Amazon Bedrock API 金鑰的許可
<a name="api-keys-modify"></a>

當您產生長期 Amazon Bedrock API 金鑰時，您可以建立與金鑰相關聯的 IAM 使用者。若要變更與金鑰相關聯的許可，請透過 IAM 服務修改 IAM 使用者的許可。如需詳細資訊，請參閱《IAM 使用者指南》中的[新增和移除 IAM 身分許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)。

**注意**  
如果您在 中產生長期金鑰 AWS 管理主控台，[AmazonBedrockLimitedAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonBedrockLimitedAccess) 預設會連接到它。如果您打算修改許可，請先移除此政策，再設定自訂許可。

## 修改 API 金鑰許可的範例
<a name="api-keys-modify-example"></a>

下列程序說明如何將 [AmazonBedrockLimitedAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonBedrockLimitedAccess) 取代為更嚴格的許可：

1.  AWS 管理主控台 使用具有使用 Amazon Bedrock 主控台之許可的 IAM 身分登入 。接著，開啟位於 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock) 的 Amazon Bedrock 主控台。

1. 從左側導覽窗格選取**API 金鑰**。

1. 選取**長期 API 金鑰**索引標籤。

1. 選取您的 API 金鑰，然後選擇**在 IAM 主控台中管理**。

1. 選取**許可**索引標籤，選擇 **AmazonBedrockLimitedAccess** 政策，然後選擇**移除**。
**注意**  
此時，您已移除 API 金鑰的所有許可，您將無法使用該金鑰執行任何操作。

1. 在**許可政策**區段中，從**新增許可**下拉式清單中選取**建立內嵌政策**。

1. 在**政策編輯器**中，選取 **JSON**。接著將以下政策貼到編輯器：

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "bedrock:CallWithBearerToken"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "bedrock:InvokeModel*"
               ],
               "Resource": [
                   "arn:aws:bedrock:us-west-2:111122223333:inference-profile/us.anthropic.claude-3-haiku-20240307-v1:0"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "bedrock:InvokeModel*"
               ],
               "Resource": [
                   "arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-3-haiku-20240307-v1:0",
                   "arn:aws:bedrock:us-west-2::foundation-model/anthropic.claude-3-haiku-20240307-v1:0"
               ],
               "Condition": {
                   "StringLike": {
                       "bedrock:InferenceProfileArn": "arn:aws:bedrock:us-west-2:111122223333:inference-profile/us.anthropic.claude-3-haiku-20240307-v1:0"
                   }
               }
           }
       ]
   }
   ```

------

1. 選擇**下一步**、提供**政策名稱**，然後選擇**建立政策**。

1. 使用此 API 金鑰，使用者現在只能在美國西部 (奧勒岡) 使用美國 Anthropic Claude 3 Haiku 推論設定檔來執行推論。

# 處理已洩露的長期和短期 Amazon Bedrock API 金鑰
<a name="api-keys-revoke"></a>

如果您的 API 金鑰已洩露，您應該撤銷使用它的許可。您可以使用多種方法來撤銷 Amazon Bedrock API 金鑰的許可：
+ 對於長期 Amazon Bedrock API 金鑰，您可以使用 [UpdateServiceSpecificCredential](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateServiceSpecificCredential.html.html)、[ResetServiceSpecificCredential](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ResetServiceSpecificCredential.html.html) 或 [DeleteServiceSpecificCredential](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteServiceSpecificCredential.html.html)，以下列方式撤銷許可：
  + 將金鑰的狀態設定為非作用中。稍後可以重新啟用它們。
  + 重設金鑰。此動作會產生金鑰的新密碼。
  + 永久刪除金鑰。
**注意**  
若要透過 API 執行這些動作，您必須使用 AWS 登入資料進行驗證，而不是使用 Amazon Bedrock API 金鑰進行驗證。
+ 對於長期和短期 Amazon Bedrock API 金鑰，您可以連接 IAM 政策來撤銷許可。

**Topics**
+ [變更長期 Amazon Bedrock API 金鑰的狀態](#api-keys-change-status)
+ [重設長期 Amazon Bedrock API 金鑰](#api-keys-reset)
+ [刪除長期 Amazon Bedrock API 金鑰](#api-keys-delete)
+ [連接 IAM 政策以移除使用 Amazon Bedrock API 金鑰的許可](#api-keys-iam-policies)

## 變更長期 Amazon Bedrock API 金鑰的狀態
<a name="api-keys-change-status"></a>

如果需要暫時防止某個金鑰被使用，請將其停用。在您準備好再次使用它時，請重新啟用它。

選擇您偏好方法的索引標籤，然後遵循下列步驟：

------
#### [ Console ]

**停用金鑰**

1.  AWS 管理主控台 使用具有使用 Amazon Bedrock 主控台之許可的 IAM 身分登入 。接著，開啟位於 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock) 的 Amazon Bedrock 主控台。

1. 在左側導覽窗格中，選取**API 金鑰**。

1. 在**長期 API 金鑰**區段中，選擇**狀態**為**非作用中**的金鑰。

1. 選擇**動作**。

1. 選取 **Deactivate** (停用)。

1. 確認後，請選取**停用 API 金鑰**。金鑰的**狀態**會變成**非作用中**。

**重新啟用金鑰**

1.  AWS 管理主控台 使用具有使用 Amazon Bedrock 主控台之許可的 IAM 身分登入 。接著，開啟位於 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock) 的 Amazon Bedrock 主控台。

1. 在左側導覽窗格中，選取**API 金鑰**。

1. 在**長期 API 金鑰**區段中，選擇**狀態**為**非作用中**的金鑰。

1. 選擇**動作**。

1. 選取**啟用**。

1. 確認後，請選取**啟用 API 金鑰**。金鑰的**狀態**會變成**作用中**。

------
#### [ Python ]

若要使用 API 停用金鑰，請使用 [IAM 端點](https://docs.aws.amazon.com/general/latest/gr/iam-service.html)傳送 [UpdateServiceSpecificCredential](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateServiceSpecificCredential.html.html) 請求，並將 `Status` 指定為 `Inactive`。您可以使用下列程式碼片段來停用金鑰，以建立金鑰時傳回的值取代 *\$1\$1ServiceSpecificCredentialId\$1*。

```
import boto3
                        
iam_client = boto3.client("iam")
                      
iam_client.update_service_specific_credential(
    service_specific_credential_id=${ServiceSpecificCredentialId},
    status="Inactive"
)
```

若要使用 API 重新啟用金鑰，請使用 [IAM 端點](https://docs.aws.amazon.com/general/latest/gr/iam-service.html)傳送 [UpdateServiceSpecificCredential](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateServiceSpecificCredential.html.html) 請求，並將 `Status` 指定為 `Active`。您可以使用下列程式碼片段來重新啟用金鑰，以建立金鑰時傳回的值取代 *\$1\$1ServiceSpecificCredentialId\$1*。

```
import boto3
                        
iam_client = boto3.client("iam")
                      
iam_client.update_service_specific_credential(
    service_specific_credential_id=${ServiceSpecificCredentialId},
    status="Active"
)
```

------

## 重設長期 Amazon Bedrock API 金鑰
<a name="api-keys-reset"></a>

如果金鑰的值已洩露或您不再擁有，請將其重設。金鑰必須尚未過期。如果已過期，請刪除金鑰並建立新的金鑰。

選擇您偏好方法的索引標籤，然後遵循下列步驟：

------
#### [ Console ]

**重設金鑰**

1.  AWS 管理主控台 使用具有使用 Amazon Bedrock 主控台之許可的 IAM 身分登入 。接著，開啟位於 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock) 的 Amazon Bedrock 主控台。

1. 在左側導覽窗格中，選取**API 金鑰**。

1. 在**長期 API 金鑰**區段中，選擇金鑰。

1. 選擇**動作**。

1. 選取**重設金鑰**。

1. 選取**下一步**。

------
#### [ Python ]

若要使用 API 重設金鑰，請使用 [IAM 端點](https://docs.aws.amazon.com/general/latest/gr/iam-service.html)傳送 [ResetServiceSpecificCredential](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ResetServiceSpecificCredential.html.html) 請求。您可以使用下列程式碼片段來重設金鑰，以建立金鑰時傳回的值取代 *\$1\$1ServiceSpecificCredentialId\$1*。

```
import boto3
            
iam_client = boto3.client("iam")
          
iam_client.reset_service_specific_credential(
    service_specific_credential_id=${ServiceSpecificCredentialId}
)
```

------

## 刪除長期 Amazon Bedrock API 金鑰
<a name="api-keys-delete"></a>

如果您不再需要金鑰或金鑰已過期，請將其刪除。

選擇您偏好方法的索引標籤，然後遵循下列步驟：

------
#### [ Console ]

**刪除關鍵點**

1.  AWS 管理主控台 使用具有使用 Amazon Bedrock 主控台之許可的 IAM 身分登入 。接著，開啟位於 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock) 的 Amazon Bedrock 主控台。

1. 在左側導覽窗格中，選取**API 金鑰**。

1. 在**長期 API 金鑰**區段中，選擇金鑰。

1. 選擇**動作**。

1. 選取**刪除**。

1. 確認刪除。

**API 金鑰與 IAM 使用者連結**  
刪除此 API 金鑰不會刪除使用此金鑰建立的 IAM 使用者做為擁有者。您可以在下一個步驟中從 IAM 主控台刪除 IAM 使用者。

------
#### [ Python ]

若要使用 API 刪除金鑰，請傳送 [DeleteServiceSpecificCredential](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteServiceSpecificCredential.html.html) 請求與 [IAM 端點](https://docs.aws.amazon.com/general/latest/gr/iam-service.html)。您可以使用下列程式碼片段來刪除金鑰，以建立金鑰時傳回的值取代 *\$1\$1ServiceSpecificCredentialId\$1*。

```
import boto3
            
iam_client = boto3.client("iam")
          
iam_client.delete_service_specific_credential(
    service_specific_credential_id=${ServiceSpecificCredentialId}
)
```

------

## 連接 IAM 政策以移除使用 Amazon Bedrock API 金鑰的許可
<a name="api-keys-iam-policies"></a>

本節提供一些 IAM 政策，可用來限制對 Amazon Bedrock API 金鑰的存取。

### 拒絕身分使用 Amazon Bedrock API 金鑰進行呼叫
<a name="api-keys-iam-policies-deny-call-with-bearer-token"></a>

允許身分使用 Amazon Bedrock API 金鑰進行呼叫的動作為 `bedrock:CallWithBearerToken`。若要防止身分使用 Amazon Bedrock API 金鑰進行呼叫，您可以根據金鑰類型，在身分上連接 IAM 政策：
+ **長期金鑰** – 將政策連接至與金鑰相關聯的 IAM 使用者。
+ **短期金鑰** – 將政策連接至用於產生金鑰的 IAM 角色。

您可以連接到 IAM 身分的 IAM 政策如下所示：

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Deny",
    "Action": "bedrock:CallWithBearerToken",
    "Resource": "*"
  }
}
```

------

### 使 IAM 角色工作階段失效
<a name="api-keys-iam-policies-invalidate-session"></a>

如果短期金鑰已洩漏，您可以讓用來產生金鑰的角色工作階段失效來防止其使用。若要讓角色工作階段失效，請將下列政策連接至產生金鑰的 IAM 身分。將 *2014-05-07T23:47:00Z* 取代為您希望工作階段失效的時間。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Deny",
    "Action": "*",
    "Resource": "*",
    "Condition": {
      "DateLessThan": {"aws:TokenIssueTime": "2014-05-07T23:47:00Z"}
    }
  }
}
```

------

# 控制產生和使用 Amazon Bedrock API 金鑰的許可
<a name="api-keys-permissions"></a>

Amazon Bedrock API 金鑰的產生和使用由 Amazon Bedrock 和 IAM 服務中的動作和條件索引鍵控制。

**控制 Amazon Bedrock API 金鑰的產生**  
[iam:CreateServiceSpecificCredential](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsidentityandaccessmanagementiam.html#awsidentityandaccessmanagementiam-actions-as-permissions) 動作會控制產生服務特定金鑰 (例如長期 Amazon Bedrock API 金鑰)。您可以將此動作的範圍限定為 IAM 使用者，以此限制可以為其產生金鑰的使用者。

您可以使用下列條件索引鍵，對 `iam:CreateServiceSpecificCredential` 動作的許可施加條件：
+ [iam:ServiceSpecificCredentialAgeDays](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_iam-condition-keys.html#ck_ServiceSpecificCredentialAgeDays) – 可讓您在條件中指定金鑰的過期時間，以天為單位。例如，您可以使用此條件索引鍵，僅允許建立有效期為 90 天的 API 金鑰。
+ [iam:ServiceSpecificCredentialServiceName](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_iam-condition-keys.html#ck_ServiceSpecificCredentialAgeDays) – 可讓您在條件中指定服務的名稱。例如，您可以使用此條件索引鍵，僅允許為 Amazon Bedrock 而非其他服務建立 API 金鑰。

**控制 Amazon Bedrock API 金鑰的使用**  
[bedrock:CallWithBearerToken](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-actions-as-permissions) 動作控制短期或長期 Amazon Bedrock API 金鑰的使用。

您可以使用 `bedrock:bearerTokenType` 條件索引鍵搭配[字串條件運算子](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String)來指定要套用 `bedrock:CallWithBearerToken` 許可的承載字符類型。您可以指定下列其中一個值：
+ `SHORT_TERM` – 在條件中指定短期 Amazon Bedrock API 金鑰。
+ `LONG_TERM` – 在條件中指定長期 Amazon Bedrock API 金鑰。

下表摘要說明如何防止身分產生或使用 Amazon Bedrock API 金鑰：


****  

| 用途 | 長期金鑰 | 短期金鑰 | 
| --- | --- | --- | 
| 防止產生金鑰 | 將拒絕 iam:CreateServiceSpecificCredential 動作的政策連接至 IAM 身分。 | N/A | 
| 防止使用金鑰 | 將拒絕 bedrock:CallWithBearerToken 動作的政策連接到與金鑰相關聯的 IAM 使用者。 | 將拒絕 bedrock:CallWithBearerToken 動作的政策連接到您不想使用金鑰的 IAM 身分。 | 

**警告**  
由於短期 Amazon Bedrock API 金鑰使用工作階段的現有憑證，因此您可以拒絕對產生金鑰的身分執行 `bedrock:CallWithBearerToken` 動作，來阻止其使用。不過，您無法防止產生短期金鑰。

## 控制 API 金鑰產生和使用的範例政策
<a name="api-keys-permissions-examples"></a>

如需控制 API 金鑰產生和使用的 IAM 政策範例，請從下列主題中選取：

**Topics**
+ [防止身分產生長期金鑰和使用 Amazon Bedrock API 金鑰](#api-keys-permissions-examples-prevent-generation-and-use)
+ [防止身分使用短期 API 金鑰](#api-keys-permissions-examples-prevent-use-short-term)
+ [防止身分使用長期 API 金鑰](#api-keys-permissions-examples-prevent-use-long-term)
+ [明確防止身分使用短期 API 金鑰](#api-keys-permissions-examples-deny-use-short-term-explicitly)
+ [明確防止身分使用長期 API 金鑰](#api-keys-permissions-examples-deny-use-long-term-explicitly)
+ [僅允許建立有效期在 90 天內的 Amazon Bedrock 金鑰](#api-keys-permissions-examples-allow-bedrock-keys-expire-within-90-days)

### 防止身分產生長期金鑰和使用 Amazon Bedrock API 金鑰
<a name="api-keys-permissions-examples-prevent-generation-and-use"></a>

若要防止 IAM 身分產生長期 Amazon Bedrock API 金鑰和使用任何 Amazon Bedrock API 金鑰，請將下列政策連接至身分：

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid":"DenyBedrockShortAndLongTermAPIKeys",
      "Effect": "Deny",
      "Action": [
        "iam:CreateServiceSpecificCredential",
        "bedrock:CallWithBearerToken"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}
```

------

**警告**  
您無法防止產生短期金鑰。
此政策將防止為所有支援建立服務特定登入資料的 AWS 服務建立登入資料。如需詳細資訊，請參閱 [IAM 使用者的服務特定憑證](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_service-specific-creds.html)。

### 防止身分使用短期 API 金鑰
<a name="api-keys-permissions-examples-prevent-use-short-term"></a>

若要防止 IAM 身分使用短期 Amazon Bedrock API 金鑰，請將下列政策連接至身分：

### 防止身分使用長期 API 金鑰
<a name="api-keys-permissions-examples-prevent-use-long-term"></a>

若要防止 IAM 身分使用長期 Amazon Bedrock API 金鑰，請將下列政策連接至身分：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "bedrock:CallWithBearerToken",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "bedrock:bearerTokenType": "LONG_TERM"
                }
            }
        }
    ]
}
```

------

### 明確防止身分使用短期 API 金鑰
<a name="api-keys-permissions-examples-deny-use-short-term-explicitly"></a>

若要明確防止 IAM 身分使用短期 Amazon Bedrock API 金鑰，但允許使用其他 API 金鑰，請將下列政策連接至身分：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "bedrock:CallWithBearerToken",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "bedrock:bearerTokenType": "SHORT_TERM"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "bedrock:CallWithBearerToken",
            "Resource": "*"
        }
    ]
}
```

------

### 明確防止身分使用長期 API 金鑰
<a name="api-keys-permissions-examples-deny-use-long-term-explicitly"></a>

若要明確防止 IAM 身分使用長期 Amazon Bedrock API 金鑰，但允許使用其他 API 金鑰，請將下列政策連接至身分：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "bedrock:CallWithBearerToken",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "bedrock:bearerTokenType": "LONG_TERM"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "bedrock:CallWithBearerToken",
            "Resource": "*"
        }
    ]
}
```

------

### 僅允許建立有效期在 90 天內的 Amazon Bedrock 金鑰
<a name="api-keys-permissions-examples-allow-bedrock-keys-expire-within-90-days"></a>

若要允許 IAM 身分僅在適用於 Amazon Bedrock 且過期時間為 90 天或更短時才允許其建立長期 API 金鑰，請將下列政策連接至身分：

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
       {
           "Effect": "Allow",
           "Action": "iam:CreateServiceSpecificCredential",
           "Resource": "arn:aws:iam::123456789012:user/username",
           "Condition": {
               "StringEquals": {
                   "iam:ServiceSpecificCredentialServiceName": "bedrock.amazonaws.com"
               },
               "NumericLessThanEquals": {
                   "iam:ServiceSpecificCredentialAgeDays": "90"
               }
           }
       }
   ]
}
```

------