

# Amazon Bedrock AgentCore 결제의 보안
<a name="payments-security-best-practices"></a>

다음 모범 사례는 Amazon Bedrock AgentCore 결제를 사용할 때 보안 인시던트를 방지하는 데 도움이 될 수 있습니다. 예방 제어는 안전하지 않은 작업이 발생하기 전에 중지합니다. Detective는 예상치 못한 활동을 표시하므로 이에 대응할 수 있습니다.

## 예방 제어
<a name="payments-security-preventative"></a>

이러한 제어를 사용하여 에이전트가 수행할 수 있는 작업을 제한하고 민감한 재료를 접근하지 못하도록 할 수 있습니다.

### 4역할 IAM 패턴으로 최소 권한 적용
<a name="payments-security-least-privilege"></a>

AgentCore 결제는 고유한 IAM 역할을 사용하여 컨트롤 플레인을 데이터 플레인과 분리합니다. 각 역할과 일치하는 페르소나를 기반으로 IAM 권한을 설정합니다. 이 패턴을 사용하면 단일 역할이 예산을 늘리고 예산을 지출할 수 없습니다.


| \# | Role | 용도 | 
| --- | --- | --- | 
| 1 |  `ControlPlaneRole`  | 서비스를 관리합니다. | 
| 2 |  `ManagementRole`  | 세션을 구성합니다. 이 역할은 명시적으로 거부됩니다`ProcessPayment`. | 
| 3 |  `ProcessPaymentRole`  | 결제를 실행합니다. | 
| 4 |  `ResourceRetrievalRole`  | 서비스 수임. 세션 및 자격 증명 상태를 가져옵니다. | 

자세한 내용은 [ AgentCore 결제에 대한 IAM 역할을](payments-iam-roles.md) 참조하세요.

### AgentCore 자격 증명에 자격 증명 저장
<a name="payments-security-credentials"></a>

Wallet 공급자 자격 증명을 에이전트 코드 또는 환경 변수에 포함시키지 마십시오.
+ Coinbase CDP 또는 Stripe(Privy) 자격 증명을 AgentCore 자격 증명`PaymentCredentialProvider`에 로 저장합니다.
+ 서비스는를 사용하여 런타임에 이를 검색합니다`ResourceRetrievalRole`.
+ Wallet 공급자의 권장 일정에 따라 자격 증명을 교체합니다. 자격 증명이 손상된 경우 즉시 취소합니다.

자세한 내용은 [AgentCore 자격 증명을](identity.md) 참조하세요.

### UserId 헤더를 올바르게 설정
<a name="payments-security-userid-header"></a>

IAM 구성 인바운드 권한 부여 결제 관리자에서 백엔드는 `X-Amzn-Bedrock-AgentCore-Payments-User-Id` 헤더를 어설션하고 AgentCore 결제는 헤더를 확인**하지** 않습니다. 이 값을 올바르게 설정하는 것은 사용자의 책임입니다.

AgentCore 결제는 IAM 호출자와 JWT(OAuth 사용 시)를 확인하지만 API 호출 시 `UserId` 헤더의 정확성은 사용자의 책임입니다. 최종 사용자 또는 에이전트가이 헤더에 직접 영향을 주지 않도록 하세요.

### 보안 다중 테넌트 배포
<a name="payments-security-multi-tenant"></a>

여러 최종 사용자에게 서비스를 제공하는 다중 테넌트 배포의 경우 결제 관리자의 `CUSTOM_JWT` (OAuth) 권한 부여 유형을 사용합니다. 이렇게 하면 서비스에 확인된 최종 사용자 자격 증명이 제공됩니다. IAM 구성 결제 관리자를 사용하면 AgentCore 결제가 최종 사용자 자격 증명을 확인하지 않습니다.

### 명시적 최종 사용자 동의 및 위임 필요
<a name="payments-security-consent"></a>

자금 조달과 위임은 두 가지 개별 최종 사용자 결정이며, 둘 다 에이전트로부터 out-of-band로 이루어집니다.
+  **자금 **- 최종 사용자는 Wallet 공급자 포털을 통해 자금을 입금합니다. 에이전트는 펀딩에 대한 API 액세스 권한이 없으며 이를 입력하거나 자동 시작해서는 안 됩니다.
+  **위임** - 최종 사용자는 Coinbase 소비 권한 또는 권한 위임 작업을 통해 권한을 부여합니다. 사용자가 언제든지 위임을 취소할 수 있으므로 위임이 영구적이라고 가정하지 마십시오. 취소된 위임을 정상적으로 처리합니다.

### 에이전트를 결제 수단과 격리합니다.
<a name="payments-security-isolation"></a>

에이전트는 카드 번호, CVV 값, 은행 세부 정보 또는 Wallet 프라이빗 키에 액세스해서는 안 됩니다. 에이전트의 보기는 "사용자 소유 지갑에서 지출할 수 있는 권한"에서 중지됩니다.
+ Wallet 키는 공급자가 또는 개발자가 아닌 자체 관리 AWS 상태로 보유합니다.
+ 프롬프트, 도구 입력 또는 컨텍스트 창을 통해 결제 수단 세부 정보를 전달하지 마세요.

### AgentCore에서 정책을 사용한 범위 도구 액세스
<a name="payments-security-policy"></a>

도구 수준 권한 부여를 위해 Amazon Bedrock AgentCore Gateway를 통해 유료 엔드포인트를 노출합니다. 게이트웨이를 통한 모든 호출은 에이전트의 자격 증명, 도구 이름 및 파라미터를 포함하여 요청을 평가하고 이를 허용할지 여부를 결정하는 Cedar 기반 엔진인 AgentCore의 정책에 의해 가로채집니다.

정책 및 결제 세션은 다양한 결정을 다룹니다.
+  **정책은** 어떤 파라미터로 *어떤 도구를* 호출*하는지* 제어합니다. ** 
+  **결제 세션**은 지출할 수 *있는 금액*과 *기간을 제어합니다*.

함께 사용하면 도구 액세스 및 지출 금액을 위한 직교 레버를 사용할 수 있습니다.
+ 에이전트 자격 증명, 사용자 그룹 및 요청 파라미터에 따라 범위가 지정된 Cedar 정책을 작성합니다.
+ 에이전트가 필요하지 않은 경우 고비용 도구에 대한 액세스를 거부합니다.
+ 도구 카탈로그가 변경되면 정책을 정기적으로 검토하고 감사합니다.

자세한 내용은 [ AgentCore의 정책을](policy.md) 참조하세요.

### 예산 한도 및 TTL과 함께 결제 세션 사용
<a name="payments-security-sessions"></a>

모든 결제는 최대 지출 금액과 만료 시간이 있는 결제 세션 내에서 실행됩니다. 인프라 계층은 이러한 제한을 적용하므로 프롬프트 주입 및 모델 비결정이 이러한 제한을 재정의할 수 없습니다.
+ 작업에 필요한 최소 `maxSpendAmount`로 설정하고 짧은 TTL을 설정합니다.
+ 보수적인 예산부터 시작하여 에이전트가 신뢰할 수 있는 것으로 입증되는 경우에만 예산을 인상합니다.
+ 실패한 서명은 예산 공제를 자동으로 롤백합니다.

자세한 내용은 [결제 세션 생성을 참조하세요](payments-create-session.md).

### payTo 주소 검증 및 제한
<a name="payments-security-payto"></a>

`payTo` 주소는 수신자 지갑을 지정합니다. AgentCore 결제는 서버 측`payTo`에 제한을 적용하지 않으므로 애플리케이션은 `ProcessPayment` API를 호출하기 전에 주소를 검증해야 합니다.
+  사전 검증된 판매자 주소의 **허용 목록을 유지하고 알 수** 없는 주소를 거부합니다.
+  **모델이 payTo 주소를 생성하지 않도록 합니다.** x402 결제 요청 또는 확인된 레지스트리와 같은 신뢰할 수 있는 소스에서 가져와야 합니다.
+  x402 응답을 처리할 때 **예상 판매자에 대해 검증**합니다.
+  엔드포인트 검색에는** AgentCore Gateway를 선호**합니다. x402 Bazaar를 통해 확인된 `payTo` 주소를 제공하기 때문입니다.
+  **Cedar 정책을 적용하여** 에이전트가 지불할 수 있는 주소를 제한합니다.
+  **세션 간에 주소를 캐싱하지 마세요.** 항상 허용 목록에 대해 검증된 현재 판매자 제공 주소를 사용합니다.

### 보안 네트워크 액세스
<a name="payments-security-network"></a>
+ VPC 엔드포인트를 사용하여 트래픽을 퍼블릭 인터넷에서 차단합니다.
+ 엔드포인트 정책 및 IAM 조건(`aws:sourceVpc`, `aws:sourceVpce`)을 적용하여 오리진을 제한합니다.
+ 모든 AgentCore 결제 API 호출에 대해 AWS CloudTrail을 활성화합니다.

### 결제 실패 및 롤백을 위한 설계
<a name="payments-security-failure"></a>
+ 멱등성을 구현하여 재시도 시 중복 결제를 방지합니다.
+ 명확한 대체 동작으로 결제 실패를 처리합니다. 무기한 재시도하지 마세요.
+ 부분적인 장애를 모니터링하고 보정 트랜잭션을 구현합니다.

## 탐지 제어
<a name="payments-security-detective"></a>

이러한 컨트롤을 사용하여 결제 활동을 관찰하고 이상 현상을 확인하여 이에 대응할 수 있습니다.

### 관찰성 및 감사 로깅 활성화
<a name="payments-security-observability"></a>

AgentCore 결제는 Amazon CloudWatch를 통해 자동 관찰성을 제공합니다.
+  **판매 로그** - 모든 데이터 영역 호출이 로깅됩니다(누가, 무엇을, 얼마나 많이, 누구에게).
+  **판매 범위** - 전체 결제 수명 주기 추적은 AWS X-Ray에서 사용할 수 있습니다.
+ 등록되지 않은 주소에 대한 결제, 비정상적으로 많은 수의 고유 수신자 또는 알려진 판매자의 갑작스러운 주소 변경과 같은 비정상적인 지출 패턴에 대한 경보를 설정합니다.
+ 규정 준수 요구 사항에 따라 로그를 보관합니다.
+ 에이전트 코드를 사용하여 자체 작업을 로깅하지 마세요.

자세한 내용은 [ Amazon CloudWatch를 사용한 관찰성을](payments-observability.md) 참조하세요.

### 구성을 정기적으로 검토
<a name="payments-security-review"></a>
+ 예산을 감사하고 지출이 적은 에이전트의 한도를 줄입니다.
+ 분기별로 Cedar 정책 및 IAM 역할을 검토합니다.
+ 예상치 못한 위임 또는 자금 조달 활동이 있는지 Wallet 공급자 대시보드를 모니터링합니다.