

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 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 Agents](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_Operations_Agents_for_Amazon_Bedrock.html) 또는 [Amazon Bedrock Agents 런타임](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_Operations_Agents_for_Amazon_Bedrock.html) API 작업
[Amazon Bedrock용 데이터 자동화](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 키를 생성할 수 있습니다.
+ **단기** - 세션 동안(12시간 이내) 지속되는 Amazon Bedrock API 키를 생성합니다. 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 키를 생성합니다. 이 간편한 원클릭 옵션을 사용하면 기본 보안 인프라를 이해하거나 AWS Identity and Access Management 권한을 수동으로 구성하지 않고도 Amazon Bedrock API 탐색을 빠르게 시작할 수 있습니다. Amazon Bedrock을 처음 사용해 보는 경우 손쉬운 자습서의 [Amazon Bedrock API 키 시작하기: 30일 키를 생성하고 첫 API 직접 호출 수행](getting-started-api-keys.md)에서 예제를 통해 장기 키를 생성하고 Amazon Bedrock을 쉽게 시작할 수 있습니다.
**주의**  
Amazon Bedrock 탐색을 위해 Amazon Bedrock API 키 사용을 제한하는 것이 좋습니다. 보안 요구 사항이 더 큰 애플리케이션에 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 키 사용과 비교합니다.

![\[Amazon Bedrock API 키를 사용한 API 설정 프로세스와 비교한 기본 API 설정 프로세스\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/setup/setup-api.png)


다이어그램의 맨 왼쪽 흐름은 AWS IAM Identity Center 또는 IAM에서 자격 증명을 생성하는 기본 프로세스를 보여줍니다. 이 프로세스를 통해 해당 자격 증명에 IAM 정책을 연결하여 API 작업을 수행할 수 있는 권한을 제공한 다음 해당 자격 증명에 대한 일반 AWS 자격 증명을 생성합니다. 그런 다음 자격 증명을 사용하여 AWS에서 API를 직접 호출할 수 있습니다.

블루 노드는 특히 Amazon Bedrock에 인증할 2개의 추가 흐름을 나타냅니다. 두 흐름 모두에 Amazon Bedrock 작업을 사용하여 인증할 수 있는 Amazon Bedrock API 키를 생성하는 작업이 포함됩니다. 다음과 같은 유형의 키를 생성할 수 있습니다.
+ **단기 키** - 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 탐색을 위해 Amazon Bedrock API 키 사용을 제한하는 것이 좋습니다. 보안 요구 사항이 더 큰 애플리케이션에 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 Agents](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_Operations_Agents_for_Amazon_Bedrock.html) 또는 [Amazon Bedrock Agents 런타임](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_Operations_Agents_for_Amazon_Bedrock.html) API 작업
[Amazon Bedrock용 데이터 자동화](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 API 키는 다음 AWS SDKs
+ Python
+ Javascript
+ Java

# Amazon Bedrock API 키 생성
<a name="api-keys-generate"></a>

AWS Management Console 또는 AWS API를 사용하여 Amazon Bedrock API 키를 생성할 수 있습니다. 몇 단계만으로 Amazon Bedrock API 키를 쉽게 생성할 수 있는 AWS Management Console을 사용하는 것이 좋습니다.

**주의**  
Amazon Bedrock 탐색을 위해 Amazon Bedrock API 키 사용을 제한하는 것이 좋습니다. 보안 요구 사항이 더 큰 애플리케이션에 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 Management Console에 로그인합니다. 그 다음 [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. **생성**을 선택합니다.
**주의**  
Amazon Bedrock 탐색을 위해 Amazon Bedrock API 키 사용을 제한하는 것이 좋습니다. 보안 요구 사항이 더 큰 애플리케이션에 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 자격 증명을 자동으로 인식할 수 있는지 확인합니다. 자격 증명을 검색하는 기본 방법은 정의된 계층 구조를 따릅니다. 특정 SDK 또는 [AWS SDK 및 도구의 표준화된 자격 증명 공급자](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html)의 도구에 대한 계층 구조를 볼 수 있습니다.
+ 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 Agents](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_Operations_Agents_for_Amazon_Bedrock.html) 또는 [Amazon Bedrock Agents 런타임](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_Operations_Agents_for_Amazon_Bedrock.html) API 작업
[Amazon Bedrock용 데이터 자동화](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 ]

다음 예제에서는 AWS SDK for Python (Boto3)을 사용하여 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 Management Console[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. Amazon Bedrock 콘솔을 사용할 권한이 있는 IAM 자격 증명 AWS Management Console 으로에 로그인합니다. 그 다음 [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 키가 손상되면 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를 통해 이러한 작업을 수행하려면 Amazon Bedrock API 키가 아닌 AWS 자격 증명으로 인증해야 합니다.
+ 장기 및 단기 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. Amazon Bedrock 콘솔을 사용할 권한이 있는 IAM 자격 증명 AWS Management Console 으로에 로그인합니다. 그 다음 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)에서 Amazon Bedrock 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **API 키**를 선택합니다.

1. **장기 API 키** 섹션에서 **상태**가 **비활성**인 키를 선택합니다.

1. **작업**을 선택합니다.

1. **Deactivate**(비활성화)를 선택합니다.

1. 확인하려면 **API 키 비활성화**를 선택합니다. 키의 **상태**가 **비활성**이 됩니다.

**키를 다시 활성화하려면**

1. Amazon Bedrock 콘솔을 사용할 권한이 있는 IAM 자격 증명 AWS Management Console 으로에 로그인합니다. 그 다음 [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. Amazon Bedrock 콘솔을 사용할 권한이 있는 IAM 자격 증명 AWS Management Console 으로에 로그인합니다. 그 다음 [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. Amazon Bedrock 콘솔을 사용할 권한이 있는 IAM 자격 증명 AWS Management Console 으로에 로그인합니다. 그 다음 [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를 사용하여 키를 삭제하려면 [IAM 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/iam-service.html)를 사용하여 [DeleteServiceSpecificCredential](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteServiceSpecificCredential.html.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>

이 섹션에서는 Amazon Bedrock API 키에 대한 액세스를 제한하는 데 사용할 수 있는 몇 가지 IAM 정책을 제공합니다.

### 자격 증명의 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 자격 증명에 연결합니다. | 해당 사항 없음 | 
| 키 사용 방지 | 키와 연결된 IAM 사용자에게 bedrock:CallWithBearerToken 작업을 거부하는 정책을 연결합니다. | 키를 사용하지 않으려는 IAM 자격 증명에 bedrock:CallWithBearerToken 작업을 거부하는 정책을 연결합니다. | 

**주의**  
단기 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>

Amazon Bedrock용이고 만료 시간이 90일 이하인 경우에만 IAM 자격 증명이 장기 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"
               }
           }
       }
   ]
}
```

------