---
title: Claude Platform on AWS의 IAM 작업
url: https://platform.claude.com/docs/ko/api/claude-platform-on-aws-iam-actions
description: AWS 정책을 통해 Claude Platform on AWS에 대한 액세스를 제어하기 위한 IAM 작업 참조입니다.
---

Claude Platform on AWS는 액세스 제어에 AWS IAM을 사용합니다. 모든 API 라우트는 `aws-external-anthropic` 네임스페이스의 IAM 작업(action)에 매핑됩니다. 이 페이지에는 모든 작업, 각 작업이 권한을 부여하는 라우트, 그리고 일반적인 액세스 패턴에 사용할 수 있는 관리형 정책이 나열되어 있습니다. 플랫폼 설정 및 인증에 대해서는 [Claude Platform on AWS](https://platform.claude.com/docs/ko/build-with-claude/claude-platform-on-aws)를 참조하세요.

## 서비스 세부 정보

| 속성              | 값                        |
| --------------- | ------------------------ |
| **IAM 서비스 접두사** | `aws-external-anthropic` |
| **리소스 유형**      | `workspace`              |

워크스페이스 ARN 형식:

```text wrap
arn:aws:aws-external-anthropic:{region}:{account-id}:workspace/{workspace-id}
```

ARN 리전은 항상 채워지며 워크스페이스가 바인딩된 리전과 일치합니다. 리소스 세그먼트는 태그가 지정된 워크스페이스 ID(`wrkspc_...`)이며, `anthropic-workspace-id` 헤더에 전달하는 값과 동일합니다.

## 작업

작업은 AWS `VerbNoun` 규칙을 따르며, `Get*` 및 `List*` 와일드카드가 깔끔한 읽기 전용 경계를 만들도록 동사를 엄격하게 구분하여 사용합니다.

### 추론

| 작업                | 권한이 부여되는 라우트                     |
| ----------------- | -------------------------------- |
| `CreateInference` | `POST /v1/messages`              |
| `CountTokens`     | `POST /v1/messages/count_tokens` |

### 배치 처리

| 작업                     | 권한이 부여되는 라우트                                                                 |
| ---------------------- | ---------------------------------------------------------------------------- |
| `CreateBatchInference` | `POST /v1/messages/batches`                                                  |
| `GetBatchInference`    | `GET /v1/messages/batches/{id}`<br />`GET /v1/messages/batches/{id}/results` |
| `ListBatchInferences`  | `GET /v1/messages/batches`                                                   |
| `CancelBatchInference` | `POST /v1/messages/batches/{id}/cancel`                                      |
| `DeleteBatchInference` | `DELETE /v1/messages/batches/{id}`                                           |

<Note>
  `GetBatchInference`는 배치 메타데이터 읽기와 배치 결과 다운로드 모두에 권한을 부여합니다. `AnthropicReadOnlyAccess`, `AnthropicInferenceAccess`, `AnthropicLimitedAccess` 정책의 `Get*` 와일드카드에는 이 작업이 포함됩니다.
</Note>

### 모델

| 작업           | 권한이 부여되는 라우트          |
| ------------ | --------------------- |
| `GetModel`   | `GET /v1/models/{id}` |
| `ListModels` | `GET /v1/models`      |

### 파일

| 작업           | 권한이 부여되는 라우트                                           |
| ------------ | ------------------------------------------------------ |
| `CreateFile` | `POST /v1/files`                                       |
| `GetFile`    | `GET /v1/files/{id}`<br />`GET /v1/files/{id}/content` |
| `ListFiles`  | `GET /v1/files`                                        |
| `DeleteFile` | `DELETE /v1/files/{id}`                                |

<Note>
  `GetFile`은 메타데이터와 콘텐츠 다운로드 모두에 권한을 부여합니다. 읽기 전용 액세스 권한이 있는 주체(principal)는 파일을 나열하는 것뿐만 아니라 파일 바이트를 다운로드할 수 있습니다.
</Note>

### 스킬

| 작업            | 권한이 부여되는 라우트                                                                                                                                                  |
| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `CreateSkill` | `POST /v1/skills`                                                                                                                                             |
| `GetSkill`    | `GET /v1/skills/{id}`<br />`GET /v1/skills/{id}/versions`<br />`GET /v1/skills/{id}/versions/{version}`<br />`GET /v1/skills/{id}/versions/{version}/content` |
| `ListSkills`  | `GET /v1/skills`                                                                                                                                              |
| `UpdateSkill` | `POST /v1/skills/{id}/versions`<br />`DELETE /v1/skills/{id}/versions/{version}`                                                                              |
| `DeleteSkill` | `DELETE /v1/skills/{id}`                                                                                                                                      |

<Note>
  `GetSkill`은 스킬 메타데이터와 스킬 콘텐츠 다운로드 모두에 권한을 부여합니다. 읽기 전용 액세스 권한이 있는 주체는 스킬을 나열하는 것뿐만 아니라 스킬 바이트를 다운로드할 수 있습니다.
</Note>

<Note>
  개별 스킬 버전을 생성하거나 삭제하는 것은 `CreateSkill` 또는 `DeleteSkill`이 아니라 `UpdateSkill`에 매핑됩니다. `aws-external-anthropic:Delete*`를 거부하는 정책은 여전히 버전 삭제를 허용하며, `aws-external-anthropic:Create*`를 거부하는 정책은 여전히 버전 생성을 허용합니다. 모든 스킬 변경을 방지해야 하는 경우 `UpdateSkill`과 `CreateSkill`도 거부하세요.
</Note>

### 에이전트

| 작업             | 권한이 부여되는 라우트                                              |
| -------------- | --------------------------------------------------------- |
| `CreateAgent`  | `POST /v1/agents`                                         |
| `GetAgent`     | `GET /v1/agents/{id}`<br />`GET /v1/agents/{id}/versions` |
| `ListAgents`   | `GET /v1/agents`                                          |
| `UpdateAgent`  | `POST /v1/agents/{id}`                                    |
| `ArchiveAgent` | `POST /v1/agents/{id}/archive`                            |

<Note>
  에이전트는 영구 삭제가 아닌 아카이브만 지원합니다. `aws-external-anthropic:Delete*`를 거부하는 정책은 `ArchiveAgent`를 차단하지 않습니다. 모든 에이전트 변경을 방지해야 하는 경우 `ArchiveAgent`, `UpdateAgent`, `CreateAgent`를 거부하세요.
</Note>

### 세션

| 작업               | 권한이 부여되는 라우트                                                                                                                                                                                      |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `CreateSession`  | `POST /v1/sessions`                                                                                                                                                                               |
| `GetSession`     | `GET /v1/sessions/{id}`<br />`GET /v1/sessions/{id}/events`<br />`GET /v1/sessions/{id}/events/stream`<br />`GET /v1/sessions/{id}/resources`<br />`GET /v1/sessions/{id}/resources/{id}`         |
| `ListSessions`   | `GET /v1/sessions`                                                                                                                                                                                |
| `UpdateSession`  | `POST /v1/sessions/{id}`<br />`POST /v1/sessions/{id}/events`<br />`POST /v1/sessions/{id}/resources`<br />`POST /v1/sessions/{id}/resources/{id}`<br />`DELETE /v1/sessions/{id}/resources/{id}` |
| `ArchiveSession` | `POST /v1/sessions/{id}/archive`                                                                                                                                                                  |
| `DeleteSession`  | `DELETE /v1/sessions/{id}`                                                                                                                                                                        |

<Note>
  `GetSession`은 세션 메타데이터, 전체 이벤트 스트림(대화 기록), 세션 리소스 읽기에 권한을 부여합니다. `AnthropicReadOnlyAccess`, `AnthropicInferenceAccess`, `AnthropicLimitedAccess` 정책의 `Get*` 와일드카드에는 이 작업이 포함됩니다.
</Note>

<Note>
  개별 세션 하위 리소스(이벤트 또는 세션 리소스)를 생성, 업데이트 또는 삭제하는 것은 `CreateSession` 또는 `DeleteSession`이 아니라 `UpdateSession`에 매핑됩니다. `aws-external-anthropic:Delete*`를 거부하는 정책은 여전히 하위 리소스 삭제를 허용하며, `aws-external-anthropic:Create*`를 거부하는 정책은 여전히 하위 리소스 생성을 허용합니다. 모든 세션 변경을 방지해야 하는 경우 `UpdateSession`, `CreateSession`, `ArchiveSession`도 거부하세요.
</Note>

### 환경

| 작업                       | 권한이 부여되는 라우트                                                                                                                                                                                                                                                 |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `CreateEnvironment`      | `POST /v1/environments`                                                                                                                                                                                                                                      |
| `GetEnvironment`         | `GET /v1/environments/{id}`<br />`GET /v1/environments/{id}/work`<br />`GET /v1/environments/{id}/work/{work_id}`<br />`GET /v1/environments/{id}/work/stats`                                                                                                |
| `ListEnvironments`       | `GET /v1/environments`                                                                                                                                                                                                                                       |
| `UpdateEnvironment`      | `POST /v1/environments/{id}`                                                                                                                                                                                                                                 |
| `ArchiveEnvironment`     | `POST /v1/environments/{id}/archive`                                                                                                                                                                                                                         |
| `DeleteEnvironment`      | `DELETE /v1/environments/{id}`                                                                                                                                                                                                                               |
| `ProcessEnvironmentWork` | `GET /v1/environments/{id}/work/poll`<br />`POST /v1/environments/{id}/work/{work_id}`<br />`POST /v1/environments/{id}/work/{work_id}/ack`<br />`POST /v1/environments/{id}/work/{work_id}/heartbeat`<br />`POST /v1/environments/{id}/work/{work_id}/stop` |

<Note>
  `aws-external-anthropic:Delete*`를 거부하는 정책은 `ArchiveEnvironment`를 차단하지 않습니다. `ProcessEnvironmentWork`는 `Create*`, `Update*`, `Delete*`, `Archive*` 와일드카드와 일치하지 않습니다. 모든 환경 변경을 방지해야 하는 경우 `ArchiveEnvironment`, `UpdateEnvironment`, `CreateEnvironment`, `ProcessEnvironmentWork`도 거부하세요.
</Note>

<Note>
  `ProcessEnvironmentWork`는 [자체 호스팅 샌드박스](https://platform.claude.com/docs/ko/managed-agents/self-hosted-sandboxes) 워커가 환경 작업 항목을 폴링하고, 확인(acknowledge)하고, 하트비트를 보내고, 중지하고, 결과를 게시할 수 있도록 권한을 부여합니다. 자체 호스팅 환경 워커를 실행하는 주체에게만 부여하세요. `AnthropicSelfHostedEnvironmentAccess` 관리형 정책에는 이 작업이 포함됩니다.
</Note>

### 볼트

| 작업             | 권한이 부여되는 라우트                                                                                                                                                                                                    |
| -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `CreateVault`  | `POST /v1/vaults`                                                                                                                                                                                               |
| `GetVault`     | `GET /v1/vaults/{id}`<br />`GET /v1/vaults/{id}/credentials`<br />`GET /v1/vaults/{id}/credentials/{id}`                                                                                                        |
| `ListVaults`   | `GET /v1/vaults`                                                                                                                                                                                                |
| `UpdateVault`  | `POST /v1/vaults/{id}`<br />`POST /v1/vaults/{id}/credentials`<br />`POST /v1/vaults/{id}/credentials/{id}`<br />`POST /v1/vaults/{id}/credentials/{id}/archive`<br />`DELETE /v1/vaults/{id}/credentials/{id}` |
| `ArchiveVault` | `POST /v1/vaults/{id}/archive`                                                                                                                                                                                  |
| `DeleteVault`  | `DELETE /v1/vaults/{id}`                                                                                                                                                                                        |

<Note>
  개별 볼트 자격 증명을 생성, 업데이트, 아카이브 또는 삭제하는 것은 `UpdateVault`에 매핑됩니다. 자격 증명 읽기는 `GetVault`에 매핑됩니다. 볼트 자격 증명 시크릿은 노출되지 않습니다. 시크릿 필드는 쓰기 전용이며 `GetVault`에서 절대 반환되지 않습니다([볼트로 인증하기](https://platform.claude.com/docs/ko/managed-agents/vaults) 참조). `aws-external-anthropic:Delete*`를 거부하는 정책은 여전히 자격 증명 삭제를 허용하며, `aws-external-anthropic:Create*`를 거부하는 정책은 여전히 자격 증명 생성을 허용합니다. 모든 볼트 변경을 방지해야 하는 경우 `UpdateVault`, `CreateVault`, `ArchiveVault`도 거부하세요.
</Note>

### 메모리 스토어

| 작업                   | 권한이 부여되는 라우트                                                                                                                                                                                                                                 |
| -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `CreateMemoryStore`  | `POST /v1/memory_stores`                                                                                                                                                                                                                     |
| `GetMemoryStore`     | `GET /v1/memory_stores/{id}`<br />`GET /v1/memory_stores/{id}/memories`<br />`GET /v1/memory_stores/{id}/memories/{id}`<br />`GET /v1/memory_stores/{id}/memory_versions`<br />`GET /v1/memory_stores/{id}/memory_versions/{id}`             |
| `ListMemoryStores`   | `GET /v1/memory_stores`                                                                                                                                                                                                                      |
| `UpdateMemoryStore`  | `POST /v1/memory_stores/{id}`<br />`POST /v1/memory_stores/{id}/memories`<br />`POST /v1/memory_stores/{id}/memories/{id}`<br />`DELETE /v1/memory_stores/{id}/memories/{id}`<br />`POST /v1/memory_stores/{id}/memory_versions/{id}/redact` |
| `ArchiveMemoryStore` | `POST /v1/memory_stores/{id}/archive`                                                                                                                                                                                                        |
| `DeleteMemoryStore`  | `DELETE /v1/memory_stores/{id}`                                                                                                                                                                                                              |

<Note>
  `GetMemoryStore`는 스토어 메타데이터, 모든 메모리, 메모리 버전 기록 읽기에 권한을 부여합니다. `AnthropicReadOnlyAccess`, `AnthropicInferenceAccess`, `AnthropicLimitedAccess` 정책의 `Get*` 와일드카드에는 이 작업이 포함됩니다.
</Note>

<Note>
  개별 메모리를 생성, 업데이트 또는 삭제하는 것과 메모리 버전을 수정(redact)하는 것은 모두 `CreateMemoryStore` 또는 `DeleteMemoryStore`가 아니라 `UpdateMemoryStore`에 매핑됩니다. `aws-external-anthropic:Delete*`를 거부하는 정책은 여전히 개별 메모리 삭제와 메모리 버전 수정을 허용하며, `aws-external-anthropic:Create*`를 거부하는 정책은 여전히 개별 메모리 생성을 허용합니다. 모든 메모리 스토어 변경을 방지해야 하는 경우 `UpdateMemoryStore`, `CreateMemoryStore`, `ArchiveMemoryStore`도 거부하세요.
</Note>

### 웹훅

| 작업                    | 권한이 부여되는 라우트                                       |
| --------------------- | -------------------------------------------------- |
| `CreateWebhook`       | `POST /v1/webhooks`                                |
| `GetWebhook`          | `GET /v1/webhooks/{id}`                            |
| `ListWebhooks`        | `GET /v1/webhooks`                                 |
| `UpdateWebhook`       | `POST /v1/webhooks/{id}`                           |
| `DeleteWebhook`       | `DELETE /v1/webhooks/{id}`                         |
| `RotateWebhookSecret` | `POST /v1/webhooks/{id}/regenerate_signing_secret` |

<Note>
  웹훅 서명 시크릿은 쓰기 전용입니다. `GetWebhook`은 웹훅 메타데이터만 반환하며 서명 시크릿은 반환하지 않습니다.
</Note>

<Note>
  `RotateWebhookSecret`은 `aws-external-anthropic:Create*`, `Update*`, `Delete*` 와일드카드와 일치하지 않습니다. 이러한 패턴을 거부하는 정책은 여전히 시크릿 교체를 허용합니다. 모든 웹훅 변경을 방지해야 하는 경우 `RotateWebhookSecret`, `UpdateWebhook`, `CreateWebhook`, `DeleteWebhook`을 거부하세요.
</Note>

### 사용자 프로필

| 작업                               | 권한이 부여되는 라우트                                 |
| -------------------------------- | -------------------------------------------- |
| `CreateUserProfile`              | `POST /v1/user_profiles`                     |
| `GetUserProfile`                 | `GET /v1/user_profiles/{id}`                 |
| `ListUserProfiles`               | `GET /v1/user_profiles`                      |
| `UpdateUserProfile`              | `POST /v1/user_profiles/{id}`                |
| `CreateUserProfileEnrollmentUrl` | `POST /v1/user_profiles/{id}/enrollment_url` |

<Note>
  사용자 프로필 작업은 `ListWorkspaces`와 마찬가지로 계정 범위입니다. `Resource`가 워크스페이스 ARN인 문(statement)은 이러한 작업을 부여하지 않으므로 `Resource: "*"`를 사용하세요.
</Note>

<Warning>
  IAM 작업 일치는 대소문자를 구분하지 않습니다. 와일드카드 `aws-external-anthropic:*File`은 `CreateFile`, `GetFile`, `DeleteFile`과 일치하지만 `ListFiles`("file"이 아닌 "files"로 끝남)와는 일치하지 않습니다. 또한 "Profile"이 "file"로 끝나기 때문에 `CreateUserProfile`, `GetUserProfile`, `UpdateUserProfile`과도 과도하게 일치합니다. Files API 작업만 부여하거나 거부하려는 경우 `*File` 접미사 패턴을 사용하는 대신 명시적으로 나열하세요(`CreateFile`, `GetFile`, `ListFiles`, `DeleteFile`).
</Warning>

### 워크스페이스

| 작업                 | 권한이 부여되는 라우트                                     |
| ------------------ | ------------------------------------------------ |
| `CreateWorkspace`  | `POST /v1/organizations/workspaces`              |
| `GetWorkspace`     | `GET /v1/organizations/workspaces/{id}`          |
| `ListWorkspaces`   | `GET /v1/organizations/workspaces`               |
| `UpdateWorkspace`  | `POST /v1/organizations/workspaces/{id}`         |
| `ArchiveWorkspace` | `POST /v1/organizations/workspaces/{id}/archive` |

<Note>
  워크스페이스는 영구 삭제가 아닌 아카이브만 지원합니다. `aws-external-anthropic:Delete*`를 거부하는 정책은 `ArchiveWorkspace`를 차단하지 않습니다. 모든 워크스페이스 변경을 방지해야 하는 경우 `ArchiveWorkspace`, `UpdateWorkspace`, `CreateWorkspace`를 거부하세요.
</Note>

### 암호화 키

| 작업            | 권한이 부여되는 라우트                                  |
| ------------- | --------------------------------------------- |
| `RegisterKey` | `POST /v1/organizations/external_keys`        |
| `GetKey`      | `GET /v1/organizations/external_keys/{id}`    |
| `ListKeys`    | `GET /v1/organizations/external_keys`         |
| `UpdateKey`   | `POST /v1/organizations/external_keys/{id}`   |
| `DisableKey`  | `DELETE /v1/organizations/external_keys/{id}` |

<Note>
  이러한 작업은 조직의 [고객 관리형 암호화 키(CMEK)](https://platform.claude.com/docs/ko/manage-claude/cmek-aws-kms#claude-platform-on-aws) 등록, 즉 어떤 AWS KMS 키 ARN이 등록되어 있는지에 대한 기록을 관리합니다. AWS KMS의 키를 생성, 변경 또는 비활성화하지는 않습니다. `DisableKey`는 등록을 제거하며, 워크스페이스가 해당 키를 여전히 사용 중인 동안에는 거부됩니다. `RegisterKey`와 `DisableKey`는 `Create*`, `Update*`, `Delete*` 와일드카드와 일치하지 않습니다. 키 등록에 대한 모든 변경을 방지해야 하는 경우 `RegisterKey`, `UpdateKey`, `DisableKey`를 거부하세요. 이러한 라우트에서 `{id}`는 URL 인코딩된 KMS 키 ARN입니다. 등록된 키를 워크스페이스에 연결하는 것은 `CreateWorkspace` 또는 `UpdateWorkspace`로 권한이 부여되는 워크스페이스 작업입니다. 키를 연결하는 주체는 해당 키에 대한 `kms:DescribeKey`, `kms:Encrypt`, `kms:Decrypt`도 필요합니다([사전 요구 사항](https://platform.claude.com/docs/ko/manage-claude/cmek-aws-kms#claude-platform-on-aws) 참조). 외부 키 작업은 계정 범위입니다. 이러한 작업에 워크스페이스 ARN을 지정해도 효과가 없으므로 `Resource: "*"`를 사용하세요.
</Note>

### 컴플라이언스

| 작업                         | 권한이 부여되는 라우트                    |
| -------------------------- | ------------------------------- |
| `ListComplianceActivities` | `GET /v1/compliance/activities` |

<Note>
  `ListComplianceActivities`는 액세스 투명성 이벤트를 포함하는 조직 전체 감사 로그인 [Compliance API](https://platform.claude.com/docs/ko/manage-claude/compliance-api) [Activity Feed](https://platform.claude.com/docs/ko/manage-claude/compliance-activity-feed) 읽기에 권한을 부여합니다. 이 라우트는 Compliance API가 [조직에 대해 활성화](https://platform.claude.com/docs/ko/manage-claude/compliance-api-access)될 때까지 오류를 반환합니다. 활성화는 Anthropic 계정 팀을 통해 요청 시 이루어집니다. `AnthropicReadOnlyAccess`, `AnthropicInferenceAccess`, `AnthropicLimitedAccess` 정책의 `List*` 와일드카드에는 이 작업이 포함됩니다.
</Note>

<Note>
  `ListComplianceActivities`는 `ListWorkspaces`와 마찬가지로 계정 범위입니다. 이 작업에 워크스페이스 ARN을 지정해도 효과가 없으므로 `Resource: "*"`를 사용하세요.
</Note>

### 텔레메트리 대상

| 작업                                          | 승인되는 경로                                                                          |
| ------------------------------------------- | -------------------------------------------------------------------------------- |
| `CreateAccountTelemetryDestination`         | `POST /v1/organizations/telemetry_destinations`                                  |
| `GetAccountTelemetryDestination`            | `GET /v1/organizations/telemetry_destinations/{id}`                              |
| `ListAccountTelemetryDestinations`          | `GET /v1/organizations/telemetry_destinations`                                   |
| `UpdateAccountTelemetryDestination`         | `POST /v1/organizations/telemetry_destinations/{id}`                             |
| `DeleteAccountTelemetryDestination`         | `DELETE /v1/organizations/telemetry_destinations/{id}`                           |
| `TestAccountTelemetryDestination`           | `POST /v1/organizations/telemetry_destinations/{id}/test`                        |
| `ListAccountTelemetryDestinationWorkspaces` | `GET /v1/organizations/telemetry_destinations/{id}/workspaces`                   |
| `AddTelemetryDestinationWorkspace`          | `POST /v1/organizations/telemetry_destinations/{id}/workspaces/{workspace_id}`   |
| `RemoveTelemetryDestinationWorkspace`       | `DELETE /v1/organizations/telemetry_destinations/{id}/workspaces/{workspace_id}` |

<Note>
  이러한 작업 중 `AddTelemetryDestinationWorkspace`와 `RemoveTelemetryDestinationWorkspace`를 제외한 모든 작업은 계정 범위이므로 워크스페이스 ARN을 지정해도 효과가 없습니다. `Resource: "*"`를 사용하세요. 대상은 모든 리전에 있는 조직의 모든 워크스페이스의 텔레메트리를 내보낼 수 있습니다. `CreateAccountTelemetryDestination`과 `UpdateAccountTelemetryDestination`은 이 모든 텔레메트리를 맡길 수 있는 주체에게만 부여하세요.
</Note>

<Note>
  `AddTelemetryDestinationWorkspace`와 `RemoveTelemetryDestinationWorkspace`는 경로에 있는 워크스페이스에 적용되며, **Workspaces** 옵션이 **Selected**인 대상에서만 적용됩니다. **All except** 목록을 변경하려면 `UpdateAccountTelemetryDestination`을 사용하세요. `aws-external-anthropic:Create*`, `Update*` 또는 `Delete*`를 거부하는 정책은 여전히 워크스페이스를 추가하고 제거하는 것을 허용합니다. 대상에 대한 모든 변경을 차단하려면 `AddTelemetryDestinationWorkspace`와 `RemoveTelemetryDestinationWorkspace`도 거부하세요.
</Note>

### 인증

| 작업                    | 권한이 부여되는 라우트 |
| --------------------- | ------------ |
| `CallWithBearerToken` | (없음)         |

`CallWithBearerToken`은 주체가 AWS SigV4 대신 API 키(베어러 토큰)를 통해 인증할 수 있도록 권한을 부여하는 인증 계층 권한입니다. 라우트에 매핑되지 않습니다. API 키 보유자가 수행하기를 원하는 라우트 매핑 작업과 함께 부여하세요.

### 콘솔 액세스

| 작업              | 권한이 부여되는 라우트 |
| --------------- | ------------ |
| `AssumeConsole` | (없음)         |

`AssumeConsole`은 주체가 AWS Console 페더레이션 흐름을 통해 Claude Platform on AWS 워크스페이스의 Claude Console을 열 수 있도록 권한을 부여합니다. 라우트에 매핑되지 않습니다. AWS Console의 Claude Platform on AWS 서비스 페이지에서 **Open Claude Console**을 클릭할 수 있어야 하는 주체에게 부여하세요. Claude Console 역할(Admin 또는 Developer)은 Anthropic 계정 담당자가 별도로 할당하며, 주체의 IAM 권한에서 파생되지 않습니다. 로그인 흐름 및 역할 설명은 [Claude Console 사용하기](https://platform.claude.com/docs/ko/build-with-claude/claude-platform-on-aws#using-the-claude-console)를 참조하세요.

## 라우트-작업 매핑

다음 표에는 Claude Platform on AWS의 모든 라우트와 이를 호출하는 데 필요한 IAM 작업이 나열되어 있습니다. 각 IAM 작업은 `anthropic-beta` 헤더를 사용하는 요청에도 권한을 부여합니다. 라우트의 베타 변형에는 별도의 IAM 작업이 필요하지 않습니다. CloudTrail은 각 작업을 Data 이벤트(대용량 데이터 플레인 작업) 또는 Management 이벤트(컨트롤 플레인 작업)로 분류합니다. 볼트 및 웹훅 작업은 시크릿(볼트 자격 증명 및 웹훅 서명 시크릿)을 보유하고 기본 활성화된 감사 로깅의 이점을 누리므로 Management 이벤트로 분류됩니다. 워크스페이스, 외부 키, 텔레메트리 대상, 컴플라이언스 작업도 조직 범위의 컨트롤 플레인 작업이므로 Management 이벤트로 분류됩니다. 추론, 배치, 모델, 파일, 스킬, 사용자 프로필 및 나머지 Claude Managed Agents 작업을 포함한 다른 모든 작업은 Data 이벤트로 분류됩니다.

| 메서드      | 라우트                                                                       | IAM 작업                                      | CloudTrail 이벤트 유형 |
| -------- | ------------------------------------------------------------------------- | ------------------------------------------- | ----------------- |
| `POST`   | `/v1/messages`                                                            | `CreateInference`                           | Data              |
| `POST`   | `/v1/messages/count_tokens`                                               | `CountTokens`                               | Data              |
| `POST`   | `/v1/messages/batches`                                                    | `CreateBatchInference`                      | Data              |
| `GET`    | `/v1/messages/batches`                                                    | `ListBatchInferences`                       | Data              |
| `GET`    | `/v1/messages/batches/{id}`                                               | `GetBatchInference`                         | Data              |
| `GET`    | `/v1/messages/batches/{id}/results`                                       | `GetBatchInference`                         | Data              |
| `POST`   | `/v1/messages/batches/{id}/cancel`                                        | `CancelBatchInference`                      | Data              |
| `DELETE` | `/v1/messages/batches/{id}`                                               | `DeleteBatchInference`                      | Data              |
| `GET`    | `/v1/models`                                                              | `ListModels`                                | Data              |
| `GET`    | `/v1/models/{id}`                                                         | `GetModel`                                  | Data              |
| `POST`   | `/v1/files`                                                               | `CreateFile`                                | Data              |
| `GET`    | `/v1/files`                                                               | `ListFiles`                                 | Data              |
| `GET`    | `/v1/files/{id}`                                                          | `GetFile`                                   | Data              |
| `GET`    | `/v1/files/{id}/content`                                                  | `GetFile`                                   | Data              |
| `DELETE` | `/v1/files/{id}`                                                          | `DeleteFile`                                | Data              |
| `POST`   | `/v1/skills`                                                              | `CreateSkill`                               | Data              |
| `GET`    | `/v1/skills`                                                              | `ListSkills`                                | Data              |
| `GET`    | `/v1/skills/{id}`                                                         | `GetSkill`                                  | Data              |
| `DELETE` | `/v1/skills/{id}`                                                         | `DeleteSkill`                               | Data              |
| `POST`   | `/v1/skills/{id}/versions`                                                | `UpdateSkill`                               | Data              |
| `GET`    | `/v1/skills/{id}/versions`                                                | `GetSkill`                                  | Data              |
| `GET`    | `/v1/skills/{id}/versions/{version}`                                      | `GetSkill`                                  | Data              |
| `GET`    | `/v1/skills/{id}/versions/{version}/content`                              | `GetSkill`                                  | Data              |
| `DELETE` | `/v1/skills/{id}/versions/{version}`                                      | `UpdateSkill`                               | Data              |
| `POST`   | `/v1/user_profiles`                                                       | `CreateUserProfile`                         | Data              |
| `GET`    | `/v1/user_profiles`                                                       | `ListUserProfiles`                          | Data              |
| `GET`    | `/v1/user_profiles/{id}`                                                  | `GetUserProfile`                            | Data              |
| `POST`   | `/v1/user_profiles/{id}`                                                  | `UpdateUserProfile`                         | Data              |
| `POST`   | `/v1/user_profiles/{id}/enrollment_url`                                   | `CreateUserProfileEnrollmentUrl`            | Data              |
| `POST`   | `/v1/organizations/workspaces`                                            | `CreateWorkspace`                           | Management        |
| `GET`    | `/v1/organizations/workspaces`                                            | `ListWorkspaces`                            | Management        |
| `GET`    | `/v1/organizations/workspaces/{id}`                                       | `GetWorkspace`                              | Management        |
| `POST`   | `/v1/organizations/workspaces/{id}`                                       | `UpdateWorkspace`                           | Management        |
| `POST`   | `/v1/organizations/workspaces/{id}/archive`                               | `ArchiveWorkspace`                          | Management        |
| `POST`   | `/v1/organizations/external_keys`                                         | `RegisterKey`                               | Management        |
| `GET`    | `/v1/organizations/external_keys`                                         | `ListKeys`                                  | Management        |
| `GET`    | `/v1/organizations/external_keys/{id}`                                    | `GetKey`                                    | Management        |
| `POST`   | `/v1/organizations/external_keys/{id}`                                    | `UpdateKey`                                 | Management        |
| `DELETE` | `/v1/organizations/external_keys/{id}`                                    | `DisableKey`                                | Management        |
| `POST`   | `/v1/organizations/telemetry_destinations`                                | `CreateAccountTelemetryDestination`         | Management        |
| `GET`    | `/v1/organizations/telemetry_destinations`                                | `ListAccountTelemetryDestinations`          | Management        |
| `GET`    | `/v1/organizations/telemetry_destinations/{id}`                           | `GetAccountTelemetryDestination`            | Management        |
| `POST`   | `/v1/organizations/telemetry_destinations/{id}`                           | `UpdateAccountTelemetryDestination`         | Management        |
| `DELETE` | `/v1/organizations/telemetry_destinations/{id}`                           | `DeleteAccountTelemetryDestination`         | Management        |
| `POST`   | `/v1/organizations/telemetry_destinations/{id}/test`                      | `TestAccountTelemetryDestination`           | Management        |
| `GET`    | `/v1/organizations/telemetry_destinations/{id}/workspaces`                | `ListAccountTelemetryDestinationWorkspaces` | Management        |
| `POST`   | `/v1/organizations/telemetry_destinations/{id}/workspaces/{workspace_id}` | `AddTelemetryDestinationWorkspace`          | Management        |
| `DELETE` | `/v1/organizations/telemetry_destinations/{id}/workspaces/{workspace_id}` | `RemoveTelemetryDestinationWorkspace`       | Management        |
| `GET`    | `/v1/compliance/activities`                                               | `ListComplianceActivities`                  | Management        |
| `POST`   | `/v1/agents`                                                              | `CreateAgent`                               | Data              |
| `GET`    | `/v1/agents`                                                              | `ListAgents`                                | Data              |
| `GET`    | `/v1/agents/{id}`                                                         | `GetAgent`                                  | Data              |
| `POST`   | `/v1/agents/{id}`                                                         | `UpdateAgent`                               | Data              |
| `POST`   | `/v1/agents/{id}/archive`                                                 | `ArchiveAgent`                              | Data              |
| `GET`    | `/v1/agents/{id}/versions`                                                | `GetAgent`                                  | Data              |
| `POST`   | `/v1/sessions`                                                            | `CreateSession`                             | Data              |
| `GET`    | `/v1/sessions`                                                            | `ListSessions`                              | Data              |
| `GET`    | `/v1/sessions/{id}`                                                       | `GetSession`                                | Data              |
| `POST`   | `/v1/sessions/{id}`                                                       | `UpdateSession`                             | Data              |
| `POST`   | `/v1/sessions/{id}/archive`                                               | `ArchiveSession`                            | Data              |
| `DELETE` | `/v1/sessions/{id}`                                                       | `DeleteSession`                             | Data              |
| `GET`    | `/v1/sessions/{id}/events`                                                | `GetSession`                                | Data              |
| `POST`   | `/v1/sessions/{id}/events`                                                | `UpdateSession`                             | Data              |
| `GET`    | `/v1/sessions/{id}/events/stream`                                         | `GetSession`                                | Data              |
| `GET`    | `/v1/sessions/{id}/resources`                                             | `GetSession`                                | Data              |
| `GET`    | `/v1/sessions/{id}/resources/{id}`                                        | `GetSession`                                | Data              |
| `POST`   | `/v1/sessions/{id}/resources`                                             | `UpdateSession`                             | Data              |
| `POST`   | `/v1/sessions/{id}/resources/{id}`                                        | `UpdateSession`                             | Data              |
| `DELETE` | `/v1/sessions/{id}/resources/{id}`                                        | `UpdateSession`                             | Data              |
| `POST`   | `/v1/environments`                                                        | `CreateEnvironment`                         | Data              |
| `GET`    | `/v1/environments`                                                        | `ListEnvironments`                          | Data              |
| `GET`    | `/v1/environments/{id}`                                                   | `GetEnvironment`                            | Data              |
| `POST`   | `/v1/environments/{id}`                                                   | `UpdateEnvironment`                         | Data              |
| `POST`   | `/v1/environments/{id}/archive`                                           | `ArchiveEnvironment`                        | Data              |
| `DELETE` | `/v1/environments/{id}`                                                   | `DeleteEnvironment`                         | Data              |
| `GET`    | `/v1/environments/{id}/work`                                              | `GetEnvironment`                            | Data              |
| `GET`    | `/v1/environments/{id}/work/poll`                                         | `ProcessEnvironmentWork`                    | Data              |
| `GET`    | `/v1/environments/{id}/work/{work_id}`                                    | `GetEnvironment`                            | Data              |
| `GET`    | `/v1/environments/{id}/work/stats`                                        | `GetEnvironment`                            | Data              |
| `POST`   | `/v1/environments/{id}/work/{work_id}`                                    | `ProcessEnvironmentWork`                    | Data              |
| `POST`   | `/v1/environments/{id}/work/{work_id}/ack`                                | `ProcessEnvironmentWork`                    | Data              |
| `POST`   | `/v1/environments/{id}/work/{work_id}/heartbeat`                          | `ProcessEnvironmentWork`                    | Data              |
| `POST`   | `/v1/environments/{id}/work/{work_id}/stop`                               | `ProcessEnvironmentWork`                    | Data              |
| `POST`   | `/v1/vaults`                                                              | `CreateVault`                               | Management        |
| `GET`    | `/v1/vaults`                                                              | `ListVaults`                                | Management        |
| `GET`    | `/v1/vaults/{id}`                                                         | `GetVault`                                  | Management        |
| `POST`   | `/v1/vaults/{id}`                                                         | `UpdateVault`                               | Management        |
| `POST`   | `/v1/vaults/{id}/archive`                                                 | `ArchiveVault`                              | Management        |
| `DELETE` | `/v1/vaults/{id}`                                                         | `DeleteVault`                               | Management        |
| `GET`    | `/v1/vaults/{id}/credentials`                                             | `GetVault`                                  | Management        |
| `POST`   | `/v1/vaults/{id}/credentials`                                             | `UpdateVault`                               | Management        |
| `GET`    | `/v1/vaults/{id}/credentials/{id}`                                        | `GetVault`                                  | Management        |
| `POST`   | `/v1/vaults/{id}/credentials/{id}`                                        | `UpdateVault`                               | Management        |
| `POST`   | `/v1/vaults/{id}/credentials/{id}/archive`                                | `UpdateVault`                               | Management        |
| `DELETE` | `/v1/vaults/{id}/credentials/{id}`                                        | `UpdateVault`                               | Management        |
| `POST`   | `/v1/memory_stores`                                                       | `CreateMemoryStore`                         | Data              |
| `GET`    | `/v1/memory_stores`                                                       | `ListMemoryStores`                          | Data              |
| `GET`    | `/v1/memory_stores/{id}`                                                  | `GetMemoryStore`                            | Data              |
| `POST`   | `/v1/memory_stores/{id}`                                                  | `UpdateMemoryStore`                         | Data              |
| `POST`   | `/v1/memory_stores/{id}/archive`                                          | `ArchiveMemoryStore`                        | Data              |
| `DELETE` | `/v1/memory_stores/{id}`                                                  | `DeleteMemoryStore`                         | Data              |
| `POST`   | `/v1/memory_stores/{id}/memories`                                         | `UpdateMemoryStore`                         | Data              |
| `GET`    | `/v1/memory_stores/{id}/memories`                                         | `GetMemoryStore`                            | Data              |
| `GET`    | `/v1/memory_stores/{id}/memories/{id}`                                    | `GetMemoryStore`                            | Data              |
| `POST`   | `/v1/memory_stores/{id}/memories/{id}`                                    | `UpdateMemoryStore`                         | Data              |
| `DELETE` | `/v1/memory_stores/{id}/memories/{id}`                                    | `UpdateMemoryStore`                         | Data              |
| `GET`    | `/v1/memory_stores/{id}/memory_versions`                                  | `GetMemoryStore`                            | Data              |
| `GET`    | `/v1/memory_stores/{id}/memory_versions/{id}`                             | `GetMemoryStore`                            | Data              |
| `POST`   | `/v1/memory_stores/{id}/memory_versions/{id}/redact`                      | `UpdateMemoryStore`                         | Data              |
| `GET`    | `/v1/webhooks`                                                            | `ListWebhooks`                              | Management        |
| `GET`    | `/v1/webhooks/{id}`                                                       | `GetWebhook`                                | Management        |
| `POST`   | `/v1/webhooks`                                                            | `CreateWebhook`                             | Management        |
| `POST`   | `/v1/webhooks/{id}`                                                       | `UpdateWebhook`                             | Management        |
| `DELETE` | `/v1/webhooks/{id}`                                                       | `DeleteWebhook`                             | Management        |
| `POST`   | `/v1/webhooks/{id}/regenerate_signing_secret`                             | `RotateWebhookSecret`                       | Management        |

이 표에 없는 라우트는 Claude Platform on AWS에서 사용할 수 없습니다. 게이트웨이는 여기에 나열되지 않은 모든 라우트를 기본적으로 거부합니다.

<Note>
  워크스페이스, 외부 키 및 텔레메트리 대상 라우트는 Claude Platform on AWS에서 사용할 수 있는 유일한 Admin API 라우트입니다. AWS Console에서, 또는 Admin 역할이 있는 경우 Claude Console에서도 워크스페이스를 생성, 업데이트 또는 아카이브할 수 있습니다. 암호화 키도 Claude Console에서 등록하고 연결할 수 있습니다.
</Note>

## 관리형 정책

AWS는 Claude Platform on AWS를 위한 다섯 개의 관리형 정책을 제공합니다. 모든 관리형 정책은 `Resource: "*"`에 적용됩니다.

| 정책                                     | 부여 내용                                                                                                                                            |
| -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| `AnthropicFullAccess`                  | `aws-external-anthropic:*`                                                                                                                       |
| `AnthropicReadOnlyAccess`              | `Get*`, `List*`, `CallWithBearerToken`                                                                                                           |
| `AnthropicInferenceAccess`             | `Get*`, `List*`, `CreateInference`, `CreateBatchInference`, `CancelBatchInference`, `DeleteBatchInference`, `CountTokens`, `CallWithBearerToken` |
| `AnthropicLimitedAccess`               | 모든 `AnthropicInferenceAccess` 작업과 모든 Claude Managed Agents 작업(에이전트, 세션, 환경, 볼트, 메모리 스토어, 웹훅, 자체 호스팅 환경 작업)                                       |
| `AnthropicSelfHostedEnvironmentAccess` | `GetEnvironment`, `ProcessEnvironmentWork`, `GetSession`, `UpdateSession`, `GetSkill`, `CallWithBearerToken`                                     |

`AnthropicInferenceAccess`는 추론을 실행하기에 충분한 가장 좁은 범위의 관리형 정책입니다. 동기 및 배치 추론을 모두 포함하며, `Get*` 및 `List*` 와일드카드를 통해 Claude Managed Agents(CMA) 리소스(에이전트, 세션, 환경, 볼트, 메모리 스토어, 웹훅)를 포함한 네임스페이스의 모든 API 리소스에 대한 읽기 액세스를 부여합니다. 여기에는 `GetFile`을 통한 파일 콘텐츠 다운로드([파일](https://platform.claude.com/docs/ko/api/claude-platform-on-aws-iam-actions#files) 참고 참조), `GetSkill`을 통한 스킬 콘텐츠 다운로드([스킬](https://platform.claude.com/docs/ko/api/claude-platform-on-aws-iam-actions#skills) 참고 참조), `GetMemoryStore`를 통한 메모리 콘텐츠가 포함됩니다. 볼트 자격 증명 시크릿과 웹훅 서명 시크릿은 노출되지 않습니다. 해당 필드는 쓰기 전용이며 `GetVault` 또는 `GetWebhook`에서 절대 반환되지 않습니다([볼트로 인증하기](https://platform.claude.com/docs/ko/managed-agents/vaults) 참조). `AnthropicInferenceAccess`는 파일 생성 또는 삭제, 스킬 관리, 사용자 프로필 관리, 워크스페이스 변경, 암호화 키 관리, 텔레메트리 대상 관리 또는 Claude Managed Agents 쓰기 작업(생성, 업데이트, 아카이브, 삭제, 처리 또는 교체)을 부여하지 않습니다. CMA 읽기를 제외하려면 `AnthropicInferenceAccess`를 필요한 특정 비-CMA 작업만 나열하는 사용자 지정 정책으로 교체하세요.

<Note>
  `AnthropicReadOnlyAccess`, `AnthropicInferenceAccess`, `AnthropicLimitedAccess`는 모두 `Get*` 및 `List*` 와일드카드를 포함하며, 이는 워크스페이스의 모든 콘텐츠(파일 바이트, 스킬 콘텐츠, 배치 결과, 세션 대화 기록, 메모리 콘텐츠)에 대한 읽기 액세스를 부여합니다. 이 와일드카드는 조직에 등록된 암호화 키 구성(키 ARN 및 메타데이터이며, 키 자료는 절대 포함되지 않음)을 읽는 `GetKey`와 `ListKeys`도 부여합니다. 또한 사용자 프로필을 읽는 계정 범위의 `GetUserProfile`과 `ListUserProfiles`도 부여합니다. `List*` 와일드카드는 조직에 대해 Compliance API가 활성화되면 조직의 컴플라이언스 [Activity Feed](https://platform.claude.com/docs/ko/manage-claude/compliance-activity-feed)를 읽는 `ListComplianceActivities`도 부여합니다([컴플라이언스](https://platform.claude.com/docs/ko/api/claude-platform-on-aws-iam-actions#compliance) 참조). `Get*` 및 `List*` 와일드카드는 또한 조직의 텔레메트리 대상을 읽되 헤더 값은 절대 읽지 않는 `GetAccountTelemetryDestination`, `ListAccountTelemetryDestinations`, `ListAccountTelemetryDestinationWorkspaces`도 부여합니다. 볼트 자격 증명 시크릿과 웹훅 서명 시크릿은 노출되지 않습니다. 해당 필드는 쓰기 전용이며 `GetVault` 또는 `GetWebhook`에서 절대 반환되지 않습니다. 주체가 기존 콘텐츠를 읽어서는 안 되는 경우 필요한 작업만 나열하는 사용자 지정 정책을 사용하세요.
</Note>

`AnthropicLimitedAccess`는 추론 작업 외에 모든 Claude Managed Agents 작업을 포함합니다.

`AnthropicSelfHostedEnvironmentAccess`는 [자체 호스팅 샌드박스](https://platform.claude.com/docs/ko/managed-agents/self-hosted-sandboxes) 워커를 실행하기에 충분한 가장 좁은 범위의 관리형 정책입니다. 환경 워커가 인증하는 주체에 연결하세요.

`AssumeConsole`은 `AnthropicReadOnlyAccess`, `AnthropicInferenceAccess`, `AnthropicLimitedAccess`, `AnthropicSelfHostedEnvironmentAccess`에 포함되지 않습니다. Claude Console 액세스가 필요한 주체는 `AnthropicFullAccess` 또는 `aws-external-anthropic:AssumeConsole`을 부여하는 사용자 지정 정책이 필요합니다. [콘솔 액세스](https://platform.claude.com/docs/ko/api/claude-platform-on-aws-iam-actions#console-access)를 참조하세요.

<Note>
  `CreateInference`와 `CreateBatchInference`는 별개의 작업입니다. 하나를 거부해도 다른 하나는 차단되지 않습니다. 모든 모델 호출을 방지하려면 둘 다 거부하세요.
</Note>

## 예시 정책

### 단일 워크스페이스에서의 동기 추론

하나의 프로덕션 워크스페이스에 대해 추론을 실행하는 IAM 주체에 최소 권한을 부여합니다:

```json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "aws-external-anthropic:CreateInference",
        "aws-external-anthropic:CountTokens",
        "aws-external-anthropic:GetModel",
        "aws-external-anthropic:ListModels",
        "aws-external-anthropic:GetWorkspace"
      ],
      "Resource": "arn:aws:aws-external-anthropic:us-west-2:123456789012:workspace/wrkspc_01AbCdEf23GhIj"
    }
  ]
}
```

<Note>
  `ListWorkspaces`는 계정 범위입니다([프로비저닝 자동화](https://platform.claude.com/docs/ko/api/claude-platform-on-aws-iam-actions#provisioning-automation) 참조). 서비스 계정이 워크스페이스를 나열해야 하는 경우 `Resource: "*"`로 `ListWorkspaces`에 대한 별도의 `Allow` 문을 추가하세요.

  이 정책은 AWS SigV4 인증을 가정합니다. 주체가 API 키로 인증하는 경우 `Resource: "*"`로 `aws-external-anthropic:CallWithBearerToken`에 대한 별도의 `Allow` 문을 추가하세요. `CallWithBearerToken`은 워크스페이스 ARN에 바인딩되지 않는 라우트 없는 작업입니다. 두 개의 문으로 구성된 패턴은 [고객별 워크스페이스 격리](https://platform.claude.com/docs/ko/api/claude-platform-on-aws-iam-actions#per-customer-workspace-isolation)를 참조하세요.
</Note>

### 고객별 워크스페이스 격리

역할을 단일 워크스페이스로 제한합니다:

```json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "aws-external-anthropic:*",
      "Resource": "arn:aws:aws-external-anthropic:us-west-2:123456789012:workspace/wrkspc_01AbCdEf23GhIj"
    },
    {
      "Effect": "Allow",
      "Action": [
        "aws-external-anthropic:CallWithBearerToken",
        "aws-external-anthropic:AssumeConsole"
      ],
      "Resource": "*"
    }
  ]
}
```

<Note>
  첫 번째 문의 `aws-external-anthropic:*` 와일드카드에는 워크스페이스 ARN 제약 조건에 의해 조용히 걸러지는 계정 범위 작업(`CreateWorkspace`, `ListWorkspaces`, `ListComplianceActivities`, 외부 키 작업, 계정 범위 텔레메트리 대상 작업, 사용자 프로필 작업)이 포함됩니다. 이는 "격리" 의도와 일치하지만(역할은 워크스페이스를 생성하거나, 워크스페이스를 열거하거나, 암호화 키 등록을 관리하거나, 컴플라이언스 Activity Feed를 읽거나, 사용자 프로필을 읽거나 관리할 수 없으며, 텔레메트리 대상을 생성, 읽기 또는 변경할 수도 없습니다. 단, `UpdateWorkspace`를 통해 이미 등록된 키를 자신의 워크스페이스에 연결할 수는 있습니다. 또한 대상의 ID가 주어지면 자신의 워크스페이스를 대상에 추가하거나 대상에서 제거할 수 있습니다), 정책에 효과가 없는 권한이 포함되어 있습니다. 역할에 사용자 프로필이 필요한 경우 `Resource: "*"`를 사용하는 사용자 프로필 작업에 대한 별도의 `Allow` 문을 추가하세요. 계정 범위 패턴은 [프로비저닝 자동화](https://platform.claude.com/docs/ko/api/claude-platform-on-aws-iam-actions#provisioning-automation)를 참조하세요.

  `CallWithBearerToken`과 `AssumeConsole`은 워크스페이스 ARN에 바인딩되지 않는 라우트 없는 작업입니다. 두 번째 문은 역할이 API 키로 인증하고 Claude Console을 열 수 있도록 `Resource: "*"`에 대해 이를 부여합니다. 역할이 SigV4만 사용하고 Claude Console 액세스가 필요하지 않은 경우 이 문을 생략하세요.
</Note>

### ZDR 민감 워크스페이스에 대한 기능 잠금

특정 워크스페이스에서 배치 처리와 파일 업로드를 차단하면서 동기 추론은 사용 가능하게 유지합니다. 워크스페이스가 서버 측에 지속되어서는 안 되는 [Zero Data Retention(ZDR)](https://platform.claude.com/docs/ko/manage-claude/api-and-data-retention) 데이터를 처리할 때 유용합니다. 이 정책을 `AnthropicInferenceAccess` 또는 [단일 워크스페이스 예시](https://platform.claude.com/docs/ko/api/claude-platform-on-aws-iam-actions#synchronous-inference-on-a-single-workspace)와 같은 Allow 정책과 함께 연결하세요. Deny 전용 정책은 그 자체로는 어떤 권한도 부여하지 않습니다:

```json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "aws-external-anthropic:CreateBatchInference",
        "aws-external-anthropic:CreateFile"
      ],
      "Resource": "arn:aws:aws-external-anthropic:us-west-2:123456789012:workspace/wrkspc_01AbCdEf23GhIj"
    }
  ]
}
```

<Note>
  이 거부는 생성만 차단합니다. 다른 파일 및 배치 작업은 함께 나열하지 않는 한 거부되지 않습니다. 워크스페이스가 파일이나 배치를 절대 보유해서는 안 되는 완전한 잠금을 위해서는 `aws-external-anthropic:GetFile`, `aws-external-anthropic:ListFiles`, `aws-external-anthropic:DeleteFile`, `aws-external-anthropic:GetBatchInference`, `aws-external-anthropic:ListBatchInferences`, `aws-external-anthropic:CancelBatchInference`, `aws-external-anthropic:DeleteBatchInference`도 거부하세요.
</Note>

### 프로비저닝 자동화

<Note>
  Admin API 외에도 AWS Console에서, 또는 Admin 역할이 있는 경우 Claude Console에서 워크스페이스를 생성, 업데이트 또는 보관할 수 있습니다.
</Note>

추론 권한 없이 워크스페이스를 생성하고 관리하는 데 필요한 작업을 CI/CD 역할에 부여합니다:

```json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "aws-external-anthropic:CreateWorkspace",
        "aws-external-anthropic:GetWorkspace",
        "aws-external-anthropic:ListWorkspaces",
        "aws-external-anthropic:UpdateWorkspace",
        "aws-external-anthropic:ArchiveWorkspace"
      ],
      "Resource": "*"
    }
  ]
}
```

`CreateWorkspace`와 `ListWorkspaces`는 계정 범위의 작업입니다. 이러한 작업에 워크스페이스 ARN을 지정해도 아무런 효과가 없으므로 `Resource: "*"`를 사용하세요.

## 참고 항목

* 설정, 인증 및 플랫폼 개요는 [Claude Platform on AWS](https://platform.claude.com/docs/ko/build-with-claude/claude-platform-on-aws)를 참조하세요
* IAM 정책 구문 및 평가 로직은 [AWS IAM 사용 설명서](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)를 참조하세요
* 감사 로깅 구성은 [AWS CloudTrail 사용 설명서](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)를 참조하세요
