# 使用 IAM 管理权限

> 全部文档的索引见 [llms.txt](https://ark.volcengine.com/llms.txt)；在任一文档页面地址后追加 `.md` 可获取该页的 Markdown 版本。

**访问控制（Identity and Access Management，简称 IAM）** 是企业级云上资源权限精细化管控的核心基础设施。在多人、多团队协作场景下，使用 IAM 结合子账号机制，可以实现火山方舟（Ark）资源的安全隔离与合规访问。

> **最佳实践建议**：在企业生产环境中，应坚决避免多人共享火山引擎主账号（即火山引擎账号）操作云资源，以降低极高的安全风险。推荐全面采用“子账号 + 最小权限原则”的访问控制策略。

本文档将指导企业开发者和系统管理员如何利用 IAM 对火山方舟的资源和控制台权限进行全生命周期管理。关于 IAM 的全局详细教程，请参考火山引擎 [访问控制官方文档](https://docs.volcengine.com/docs/6257/64959?lang=zh)。

> **说明**
>
> **权限边界说明**： IAM 主要用于管理用户对火山方舟**管控面**（如资源配置、控制台访问）的权限。 若需管理**数据面**（如模型推理调用）权限，请通过配置 API Key 权限实现，详情参阅 [管理 API Key](/docs/manage-api-keys)。

<span id="concepts"></span>
# 基本概念

|核心术语 |实体说明与企业应用场景 |
|---|---|
|**主账号 (Root Account)** |**定义**：火山引擎的顶级账号，是云资源的拥有者和计费主体，默认拥有该账号下所有资源的最高权限。 | \
| |**场景**：仅限企业最高级管理员（如财务/IT总监）持有，用于创建 IAM 账号、支付账单。日常运维**严禁**使用主账号访问和操作具体资源。 |
|**IAM 用户/子账号 (IAM User)** |**定义**：归属于主账号的子身份实体，不独立拥有资源或计费。必须授权后方可登录控制台或通过 API 访问资源。 | \
| |**场景**：为企业内的每位开发者或系统（如 CI/CD 流水线）创建独立的 IAM 用户。详细说明见 [IAM 用户](https://docs.volcengine.com/docs/6257/64977?lang=zh)。 |
|**用户组 (User Group)** |**定义**：对具有相同职责的 IAM 用户进行分类管理的集合实体。 | \
| |**场景**：按团队（如算法组、后端组）或角色（如管理员、访客）划分。授权时直接对用户组绑定策略，实现权限的批量下发与回收，极大降低运维成本。详细说明见 [用户组管理](https://docs.volcengine.com/docs/6257/104988?lang=zh)。 |
|**角色 (Role)** |**定义**：一种无永久凭证的虚拟身份，通过 STS (Security Token Service) 临时安全令牌被可信实体扮演。 | \
| |**场景**：适用于跨账号授权、应用实例免密访问（如 ECS 访问方舟模型）等高阶安全场景。详细说明见 [角色免密登录控制台](https://docs.volcengine.com/docs/6257/160179?lang=zh)。 |

<span id="system-policies-role"></span>
# 权限策略管理

策略（Policy）是定义权限边界的 JSON 描述文件，包含授权效果（Effect）、操作（Action）和资源（Resource）。IAM 支持两种策略类型：
1. **系统策略 (System Policy)**：由火山引擎各产品团队创建与更新，用户可直接关联使用但无法修改。
2. **自定义策略 (Custom Policy)**：由企业管理员自主编写与维护，支持极其精细的权限控制（如限制特定资源、特定 IP 或特定时间段）。

<span id="preset-policies"></span>
## 火山方舟预设策略（系统策略）

为方便企业快速落地权限管控，火山方舟提供了多套开箱即用的预设策略：

|策略名称 |权限描述 |适用企业角色 |策略详情链接 |
|---|---|---|---|
|**ArkFullAccess** |**最高管理员权限**：拥有对所有 Ark 服务的完全读写与配置权限。 |算法负责人、核心研发、IT 运维 |[查看策略详情](https://console.volcengine.com/iam/policymanage/System/ArkFullAccess?tab=content) |
|**ArkStandardGlobalAccess** |**标准管控权限**：可查看并配置**除模型开通外**的所有资源。 |普通算法工程师、后端研发 |[查看策略详情](https://console.volcengine.com/iam/policymanage/System/ArkStandardGlobalAccess?tab=content) |
|**ArkReadOnlyAccess** |**全局只读权限**：可查看所有资源配置（如精调任务、推理接入点等），但无法修改。 |产品经理、运营人员、审计人员 |[查看策略详情](https://console.volcengine.com/iam/policymanage/System/ArkReadOnlyAccess?tab=content) |
|**ArkExperienceAccess** |**体验中心权限**：仅可查看并体验模型广场中的预置模型。 |业务试用人员、售前工程师 |[查看策略详情](https://console.volcengine.com/iam/policymanage/System/ArkExperienceAccess?tab=content) |
|**ArkGlobalInitAccess** |**项目基础隔离权限**：提供访问控制台所需的底层基础权限，**必须**配合其他项目级策略组合使用。 |**需执行项目资源隔离的所有用户** |[查看策略详情](https://console.volcengine.com/iam/policymanage/System/ArkGlobalInitAccess?tab=content) | \
| | | | | \
| |:::warning | | | \
| |如配置项目级的管理权限，需要为子账号配置  | | | \
| |**ArkGlobalInitAccess**权限，且不限制项目级别。示例请参见[配置实战：为开发团队分配项目管理员权限](/docs/use-iam-to-manage-permissions#8c94f024)。 | | | \
| |::: | | |
|**ServiceRoleForArk** |**服务关联角色**：授权方舟平台以系统身份访问您账号下的其他关联云服务资源。 |系统底层服务通信 |[查看角色详情](https://console.volcengine.com/iam/identitymanage/role/ServiceRoleForArk/) |

<span id="custom-policies"></span>
## 自定义权限策略配置

在复杂企业场景中，系统预设策略往往无法满足“最小权限原则”。此时，建议企业安全架构师编写自定义权限策略。

> **最佳实践**：定期审计自定义策略的使用情况，回收长期未使用的冗余权限；避免使用通配符 `*` 授予不必要的过大权限。自定义策略的版本更新需由企业自行维护。

<span id="56347575"></span>
# 企业级权限管控场景实践

<span id="user"></span>
## 场景 1：模型调用与全生命周期管理

以下示例演示如何通过自定义 JSON 策略，为算法工程师授予特定的模型管理权限（包括接入点的创建、启停、删除及 API 调用等）。
**权限策略 JSON 示例**：

```json
{
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ark:CreateEndpoint",
                "ark:ListFoundationModels",
                "ark:ListCustomModels",
                "ark:ListFoundationModelVersions",
                "ark:ListEndpoints",
                "ark:StopEndpoint",
                "ark:StartEndpoint",
                "ark:GetEndpoint",
                "ark:DeleteEndpoint",
                "ark:UpdateEndpoint",
                "ark:GetModelChargeItem",
                "ark:InnerGetModelUnitPrice",
                "ark:GetEndpointExampleCode",
                "ark:GetApiKey",
                "tag:GetTagValues",
                "tag:GetTagKeys"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

**细粒度资源隔离（Resource 限制）**： 若需严格限制该策略仅对特定项目的特定接入点生效，可将 `Resource` 字段从全局的 `"*"` 替换为具体的资源 ARN（Amazon Resource Name 风格的标识符），从而极大缩小爆炸半径：

```json
"Resource": [
                "trn:iam::2100000xxx:user/username",
                "trn:iam::2100000xxx:group/usergroupname",
                "trn:iam::2100000xxx:project/projectname",
                "trn:ark:cn-beijing:2100000xxx:endpoint/ep-20240407133918-vdsmd3"
                ]
```

<span id="68d11b0c"></span>
## 场景 2：按资源项目管理账号权限

大型企业通常存在多个业务线（如 AIGC 业务部、智能客服部）。火山引擎提供 **资源项目（Resource Project）** 功能，通过将 IAM 策略与特定项目绑定，实现跨部门的资源与数据强隔离。
配置基于项目的管控时，**必须组合使用** `ArkGlobalInitAccess`（全局基础权限）与特定的项目级别策略： 

|权限需求层级 |全局生效策略 (不限制项目) |项目内生效策略 (限制到具体项目) |最终呈现效果 |
|---|---|---|---|
|**项目内体验** |`ArkGlobalInitAccess` |`ArkExperienceAccess` |用户仅能在指定项目内体验模型广场中的功能，无法触及其他项目。 |
|**项目内只读** |`ArkGlobalInitAccess` |`ArkReadOnlyAccess` |用户可查看指定项目下的所有精调任务、接入点等，不能进行变更。 |
|**项目内标准操作** |`ArkGlobalInitAccess` |`ArkStandardGlobalAccess` |用户可管理指定项目内除模型开通外的所有资源（适用于项目主力研发）。 |
|**项目内全权管理** |`ArkGlobalInitAccess` |`ArkFullAccess` |用户作为该项目的超级管理员，可配置和管理该项目内一切方舟资源。 |

<span id="27a97528"></span>
# 资源精细化管理与分账

为满足企业的成本核算与合规审计需求，建议深度使用资源项目与标签体系。

<span id="a757eda9"></span>
## 资源项目管理 (Resource Project)

资源项目是企业内部环境隔离（如 Dev/Test/Prod）或部门隔离的最佳载体。
* **逻辑分组**：每个云资源只能属于一个项目，项目间的资源默认逻辑隔离。加入项目不会改变云资源底层的关联关系。
* **独立核算**：基于项目进行 IAM 授权不仅可维护数据安全，企业还可通过项目维度输出消费账单，精准计算各业务线的 AI 资源消耗成本。
* **扩展阅读**：[火山方舟分账最佳实践](/docs/practice-guidance-for-modelark-bill-split) | [项目分账指南](https://docs.volcengine.com/docs/6649/174601?lang=zh)

<span id="a8c5beaa"></span>
## 标签管理 (Tagging)

标签由一组 `Key:Value` 键值对组成，提供比项目更灵活的多维聚合能力。
* **应用场景**：通过标签实现按负责人追踪（如 `Owner:ZhangSan`）、按业务域分类（如 `Domain:NLP`）。支持基于标签进行权限控制（ABAC）及精细化分账。
* **扩展阅读**：[云资源标签管理](https://docs.volcengine.com/docs/6649/189377?lang=zh)

<span id="8c94f024"></span>
# 配置实战：为开发团队分配项目管理员权限

本节以企业常见的授权流程为例，演示如何为特定用户组配置 `default（默认项目）` 的 `ArkFullAccess` 权限。
**前置条件**：您必须使用主账号或具有 IAM 管理员权限（如关联了 `AdministratorAccess` 策略）的子账号登录控制台。
**操作步骤**：
1. **定位用户/用户组**： 登录火山引擎控制台，导航至 [访问控制 - 用户页面](https://console.volcengine.com/iam/identitymanage/user)。
2. **发起授权**： 在目标用户或用户组右侧的 **操作** 列中，单击 **添加权限**。
3. **配置全局基础权限**： 在 **授权策略** 搜索框中查找并勾选 **`ArkGlobalInitAccess`**。

    * *关键点*：此时 **限制到项目资源** 必须选择 **否**（因基础管控界面读取权限需在全局生效）。
4. **配置项目业务权限**： 继续在搜索框中查找并勾选 **`ArkFullAccess`**。

    * *关键点*：此时 **限制到项目资源** 必须选择 **是**，并在下拉菜单中选择目标项目（本例选择 `default（默认项目）`）。
5. **确认与生效**： 检查策略与项目匹配无误后，单击 **提交** 按钮。权限变更即刻生效。目标团队成员重新登录后，即可在 `default` 项目下自由调度火山方舟资源。
