基于角色的访问控制(Role-Based Access Control,RBAC)

页面摘要: Role-Based Access Control (RBAC,基于角色的访问控制) 管理管理面板中的管理员角色和细粒度权限。本文档涵盖创建角色、分配权限以及保护管理类工作流。

Role-Based Access Control (RBAC,基于角色的访问控制) 功能允许管理作为管理面板用户的管理员。更具体地说,RBAC 管理管理员的账户和角色。

  • 套餐:免费功能
  • 角色与权限:在「角色 > 设置 - 用户与角色(Users & Roles)」中的 CRUD 权限
  • 启用:默认可用且已启用
  • 环境:在开发(Development)和生产(Production)环境中均可用

配置

配置该功能的路径: 设置 > 管理面板(Administration panel) > 角色(Roles)

角色(Roles) 界面显示你的 Strapi 应用中为管理员创建的所有角色。

从此界面可以:

默认情况下,任何 Strapi 应用都定义了 3 个管理员角色:

  • 作者(Author):能够创建并管理他们自己的内容。
  • 编辑(Editor):能够创建内容,并管理和发布任何内容。
  • 超级管理员(Super Admin):能够访问所有功能与设置。这是创建 Strapi 应用时默认赋予第一位管理员的角色。

创建新角色

在 管理面板(Administration panel) > 角色(Roles) 界面的右上角,显示一个 添加新角色(Add new role) 按钮。点击该 添加新角色(Add new role) 按钮,为你的 Strapi 应用创建新角色。

你将被重定向到角色编辑界面,在那里你可以编辑角色的详细信息并配置其权限(见 编辑角色的详细信息)。

使用 RBAC 的新角色

TIP

在 角色(Roles) 界面的表格中,你可以点击复制按钮 通过复制现有角色来创建新角色。

删除角色

管理员角色可以从 管理面板(Administration panel) > 角色(Roles) 界面删除。但是,只有当它们不再被分配给 Strapi 应用中的任何管理员时,才能被删除。

  1. 确保你想要删除的角色不再被分配给任何管理员。
  2. 点击角色记录右侧的删除按钮 。
  3. 在删除窗口中,点击 确认(Confirm) 按钮以确认删除。

编辑角色

管理员角色编辑界面

角色编辑界面允许你编辑管理员角色的详细信息,并详细配置对 Strapi 应用所有部分的权限。

从 管理面板(Administration panel) > 角色(Roles) 访问该界面,可以点击角色记录右侧的编辑按钮 ,或在点击 添加新角色(Add new role) 按钮之后(见 创建新角色)。

:::caution 无法编辑超级管理员(Super Admin)角色的权限。所有配置均为只读模式。 :::

编辑角色的详细信息

管理员角色编辑界面的详细信息区域允许你定义角色的名称,并为其添加描述,以帮助其他管理员理解该角色授予的访问权限。

角色详细信息说明
名称(Name)在文本框中写入角色的新名称。
描述(Description)在文本框中写入角色的描述。
TIP

在右上角,你可以看到一个计数器,指示有多少管理员已被分配该角色。

配置角色权限

管理员角色编辑界面的权限区域允许你详细配置管理员对 Strapi 应用任何部分可以执行的操作。

它以表格形式显示,分为 4 个类别:集合类型(Collection types)、单一类型(Single types)、插件(Plugins) 和 设置(Settings)。

集合类型与单一类型

集合类型(Collection types)和单一类型(Single types)类别分别列出 Strapi 应用所有可用的集合类型和单一类型。

对于每个内容类型(content-type),管理员可以拥有执行以下操作的权限:创建(create)、读取(read)、更新(update)、删除(delete)和发布(publish)。

  1. 进入权限表格的「集合类型(Collection types)」或「单一类型(Single types)」类别。
  2. 勾选要授予访问权限的内容类型名称左侧的复选框。默认情况下,可以对该内容类型的所有字段执行所有操作。
  3. (可选)取消勾选与操作相关的复选框,以阻止你选择的操作。
  4. (可选)点击内容类型的名称以显示其完整字段列表。取消勾选字段和操作相关的复选框,以阻止对你所选字段的访问和/或操作。如果安装了 国际化(Internationalization)功能,还需定义应为每个可用语言区域(locale)授予哪些权限。
  5. 对角色应授予访问权限的每个可用内容类型,重复步骤 2 至 4。
  6. 点击右上角的 保存(Save) 按钮。
插件与设置

插件(Plugins)和设置(Settings)类别都按 Strapi 应用每个可用插件或设置显示子类别。每个子类别包含其自己特定的权限集。

  1. 进入权限表格的「插件(Plugins)」或「设置(Settings)」类别。
  2. 点击要配置权限的子类别名称,以显示所有可用权限。
  3. 勾选角色应授予访问权限的权限复选框。你可以参考下表获取更多信息和说明。

插件(Plugins)

默认情况下,可以为 内容类型构建器(Content-type Builder)、上传(Upload,即 Media Library(媒体库))、内容管理器(Content Manager) 以及 用户与权限(Users & Permissions)(即允许你管理终端用户的用户与权限功能)配置包权限。每个包都有自己特定的权限集。

包名称权限
Content-Releases
(发布,Releases)
  • 通用(General)

  • "读取(Read)" - 授予对 Releases(发布)功能的访问权限

  • "创建(Create)" - 允许你创建发布

  • "编辑(Edit)" - 允许你编辑发布

  • "删除(Delete)" - 允许你删除发布

  • "发布(Publish)" - 允许你发布

  • "从发布中移除一个条目"

  • "向发布中添加一个条目"

| | Content-Manager |

  • 单一类型(Single types)

  • "配置视图(Configure view)" - 允许你配置单一类型的编辑视图

  • 集合类型(Collection types)

  • "配置视图(Configure view)" - 允许你配置集合类型的编辑视图

  • 组件(Components)

  • "配置布局(Configure Layout)" - 允许你配置组件的布局

| | Content-Type-Builder |

  • 通用(General)

  • "读取(Read)" - 以只读模式授予对 Content-type Builder 插件的访问权限

| | Upload (Media Library(媒体库)) |

  • 通用(General)

  • "访问 Media Library(媒体库)" - 授予对 Media Library(媒体库)插件的访问权限

  • "配置视图(Configure view)" - 允许你配置 Media Library(媒体库)的视图

  • 资源(Assets)

  • "创建(上传)[Create (upload)]" - 允许你上传媒体文件

  • "更新(裁剪、详情、替换)+ 删除 [Update (crop, details, replace) + delete]" - 允许你编辑已上传的媒体文件

  • "下载(Download)" - 允许你下载已上传的媒体文件

  • "复制链接(Copy link)" - 允许你复制已上传媒体文件的链接

| | Users-Permissions |

  • 角色(Roles)

  • "创建(Create)" - 允许你创建终端用户角色

  • "读取(Read)" - 允许你查看已创建的终端用户角色

  • "更新(Update)" - 允许你编辑终端用户角色

  • "删除(Delete)" - 允许你删除终端用户角色

  • 提供方(Providers)

  • "读取(Read)" - 允许你查看提供方

  • "编辑(Edit)" - 允许你编辑提供方

  • 邮件模板(Email Templates)

  • "读取(Read)" - 允许你访问邮件模板

  • "编辑(Edit)" - 允许你编辑邮件模板

  • 高级设置(Advanced settings)

  • "读取(Read)" - 允许你访问用户与权限(Users & Permissions)插件的高级设置

  • "编辑(Edit)" - 允许你编辑高级设置

👉 用户与权限(Users & Permissions)插件路径提示: 通用(General) > 设置(Settings) > 用户与权限插件(Users & Permissions plugin) |

设置(Settings)

可以为从管理面板主导航的 通用(General) > 设置(Settings) 可访问的所有设置配置设置权限。它们还允许你配置对管理面板的插件(Plugins)和插件市场(Marketplace)部分的访问。每个设置都有自己特定的权限集。

设置名称权限
Content Releases
  • 选项(Options)

  • "读取(Read)" - 允许你访问 Releases(发布)设置

  • "编辑(Edit)" - 允许你编辑 Releases(发布)设置

👉 Releases(发布)设置路径提示: 通用(General) > 设置(Settings) > 全局设置(Global Settings) - Releases(发布) | | Email |

  • 通用(General)

  • "访问邮件设置页面(Access the Email settings page)" - 授予对 Email(邮件)设置的访问权限

👉 Email(邮件)设置路径提示: 通用(General) > 设置(Settings) > 用户与权限插件(Users & Permissions plugin) - 邮件模板(Email templates) | | Media Library |

  • 通用(General)

  • "访问 Media Library(媒体库)设置页面(Access the Media Library settings page)" - 授予对 Media Library(媒体库)设置的访问权限

👉 Media Library(媒体库)设置路径提示: 通用(General) > 设置(Settings) > 全局设置(Global Settings) - Media Library(媒体库) | | Internationalization |

  • 语言区域(Locales)

  • "创建(Create)" - 允许你创建新的语言区域

  • "读取(Read)" - 允许你查看可用的语言区域

  • "更新(Update)" - 允许你编辑可用的语言区域

  • "删除(Delete)" - 允许你删除语言区域

👉 国际化(Internationalization)设置路径提示: 通用(General) > 设置(Settings) > 全局设置(Global Settings) - Internationalization(国际化) | | Review Workflows |

  • "创建(Create)" - 允许你创建工作流

  • "读取(Read)" - 允许你查看已创建的工作流

  • "更新(Update)" - 允许你编辑工作流

  • "删除(Delete)" - 允许你删除工作流 👉 Review workflows(审核工作流)设置路径提示: 通用(General) > 设置(Settings) > 全局设置(Global Settings) - Review workflows(审核工作流) | | Single sign on |

  • 选项(Options)

  • "读取(Read)" - 允许你访问 SSO(单点登录)设置

  • "更新(Update)" - 允许你编辑 SSO(单点登录)设置

👉 SSO(单点登录)设置路径提示: 通用(General) > 设置(Settings) > 全局设置(Global Settings) - Single Sign-On(单点登录) | | Audit Logs |

  • 选项(Options)

  • "读取(Read)" - 允许你访问 Audit Logs(审计日志)设置

👉 Audit Logs(审计日志)设置路径提示: 通用(General) > 设置(Settings) > 管理面板(Admin Panel) - Audit Logs(审计日志) | | Plugins and Marketplace |

  • 插件市场(Marketplace)

  • "访问插件市场(Access the Marketplace)" - 授予对插件市场(Marketplace)的访问权限

| | Webhooks |

  • 通用(General)

  • "创建(Create)" - 允许你创建 Webhook

  • "读取(Read)" - 允许你查看已创建的 Webhook

  • "更新(Update)" - 允许你编辑 Webhook

  • "删除(Delete)" - 允许你删除 Webhook

👉 Webhook 设置路径提示: 通用(General) > 设置(Settings) > 全局设置(Global Settings) - Webhook | | Users and Roles |

  • 用户(Users)

  • "创建(邀请)[Create (invite)]" - 允许你创建管理员账户

  • "读取(Read)" - 允许你查看现有的管理员账户

  • "更新(Update)" - 允许你编辑管理员账户

  • "删除(Delete)" - 允许你删除管理员账户

  • 角色(Roles)

  • "创建(Create)" - 允许你创建管理员角色

  • "读取(Read)" - 允许你查看已创建的管理员角色

  • "更新(Update)" - 允许你编辑管理员角色

  • "删除(Delete)" - 允许你删除管理员角色

👉 RBAC 功能路径提示: 通用(General) > 设置(Settings) > 管理面板(Administration Panel) | | API Tokens |

  • API 令牌(API tokens)

  • "访问 API Tokens(API 令牌)设置页面(Access the API tokens settings page)" - 切换对 API Tokens(API 令牌)页面的访问

  • 通用(General)

  • "创建(生成)[Create (generate)]" - 允许创建 API 令牌

  • "读取(Read)" - 允许你查看已创建的 API 令牌(禁用此权限将禁用对 全局设置(Global Settings) - API Tokens(API 令牌) 设置的访问)

  • "更新(Update)" - 允许编辑 API 令牌

  • "删除(撤销)[Delete (revoke)]" - 允许删除 API 令牌

  • "重新生成(Regenerate)" - 允许重新生成 API 令牌

👉 API Tokens(API 令牌)设置路径提示: 通用(General) > 设置(Settings) > 全局设置(Global Settings) - API Tokens(API 令牌) | | Admin Tokens |

  • Admin 令牌(Admin tokens)

  • "访问 Admin tokens(Admin 令牌)设置页面(Access the Admin tokens settings page)" - 切换对 Admin Tokens(Admin 令牌)页面的访问

  • 通用(General)

  • "创建(生成)[Create (generate)]" - 允许创建 Admin 令牌

  • "读取(Read)" - 允许你查看已创建的 Admin 令牌

  • "更新(Update)" - 允许编辑 Admin 令牌

  • "删除(撤销)[Delete (revoke)]" - 允许删除 Admin 令牌

  • "重新生成(Regenerate)" - 允许重新生成 Admin 令牌

👉 Admin Tokens(Admin 令牌)设置路径提示: 通用(General) > 设置(Settings) > 管理面板(Administration Panel) - Admin Tokens(Admin 令牌) | | Project |

  • 通用(General)

  • "更新项目级设置(Update the project level settings)" - 允许你编辑项目的设置

  • "读取项目级设置(Read the project level settings)" - 授予对项目设置的访问权限

| | Transfer Tokens |

  • Transfer 令牌(Transfer tokens)

  • "访问 Transfer tokens(Transfer 令牌)设置页面(Access the Transfer tokens settings page)" - 切换对 Transfer Tokens(Transfer 令牌)页面的访问

  • 通用(General)

  • "创建(生成)[Create (generate)]" - 允许创建 Transfer 令牌

  • "读取(Read)" - 允许你查看已创建的 Transfer 令牌(禁用此权限将禁用对 全局设置(Global Settings) - Transfer Tokens(Transfer 令牌) 设置的访问)

  • "更新(Update)" - 允许编辑 Transfer 令牌

  • "删除(撤销)[Delete (revoke)]" - 允许删除 Transfer 令牌

  • "重新生成(Regenerate)" - 允许重新生成 Transfer 令牌

👉 Transfer Tokens(Transfer 令牌)设置路径提示: 通用(General) > 设置(Settings) > 全局设置(Global Settings) - Transfer Tokens(Transfer 令牌) |

  1. 点击右上角的 保存(Save) 按钮。
TIP

要为你的自定义插件创建管理员权限,请参阅我们的 专用指南。

为权限设置自定义条件

对于每个类别的每个权限,都会显示一个 设置(Settings) 按钮。它允许你通过定义管理员被授予该权限所需的附加条件,进一步推进权限配置。

有 2 个默认的附加条件:

  • 管理员必须是创建者,
  • 管理员必须与创建者拥有相同的角色。

自定义条件

  1. 点击已为角色授予的权限的 设置(Settings) 按钮。
  2. 在 定义条件(Define conditions) 窗口中,每个可用权限都可以用特定条件进行自定义。点击你要自定义的权限相关的下拉列表。
  3. 为所选权限定义自定义条件。你可以:
    • 勾选「默认(Default)」选项以应用所有可用的附加条件。
    • 点击箭头按钮 查看可用的附加条件,并仅勾选所选的条件。
  4. 点击 应用(Apply) 按钮。
TIP

一旦为某项权限设置了自定义条件,该权限名称旁和 设置(Settings) 按钮旁会显示一个圆点。

:::caution 自定义条件只能为已勾选授予该角色的权限设置。否则,当点击 设置(Settings) 按钮时,打开的窗口将保持空白,因为没有任何可用的自定义条件选项。 :::

如果已经事先为你的 Strapi 应用创建了其他自定义条件,它们也可能可用。以下专用指南可帮助你创建额外的自定义条件:

使用

使用该功能的路径: 设置 > 管理面板(Administration panel) > 用户(Users)

用户(Users) 界面显示一个表格,列出你的 Strapi 应用的所有管理员。更具体地说,对于表中列出的每个管理员,都会显示他们的主要账户信息,包括姓名、电子邮件和被分配的角色。还会指示其账户状态:激活或非激活,取决于管理员是否已经登录以激活账户。

用户(Users)界面

从此界面可以:

  • 进行文本搜索 > **提示:**此处原本是一个交互式组件(ScreenshotNumberReference),在静态 Markdown 中无法渲染。可参考原始在线文档查看对应内容。 以查找特定管理员,
  • 设置筛选条件 > **提示:**此处原本是一个交互式组件(ScreenshotNumberReference),在静态 Markdown 中无法渲染。可参考原始在线文档查看对应内容。 以查找特定管理员,
  • 创建新的管理员账户(见 创建新账户)> **提示:**此处原本是一个交互式组件(ScreenshotNumberReference),在静态 Markdown 中无法渲染。可参考原始在线文档查看对应内容。,
  • 删除管理员账户 > **提示:**此处原本是一个交互式组件(ScreenshotNumberReference),在静态 Markdown 中无法渲染。可参考原始在线文档查看对应内容。(见 删除账户),
  • 或访问某个管理员账户的相关信息并编辑它 > **提示:**此处原本是一个交互式组件(ScreenshotNumberReference),在静态 Markdown 中无法渲染。可参考原始在线文档查看对应内容。(见 编辑账户)。
TIP

可以为表中显示的大多数字段启用排序。点击表头中要排序的字段名称,即可按该字段排序。

创建新账户

用户邀请

  1. 点击 邀请新用户(Invite new user) 按钮。
  2. 在 邀请新用户(Invite new user) 窗口中,填写关于新管理员的详细信息(Details):
用户信息说明
名字(First name)(必填)在文本框中写入管理员名字。
姓氏(Last name)(必填)在文本框中写入管理员姓氏。
电子邮件(Email)(必填)在文本框中写入管理员的完整电子邮件地址。
  1. 填写关于新管理员的登录(Login)设置:
设置说明
用户角色(User's roles)(必填)从下拉列表中选择要分配给新管理员的角色。
通过 SSO 连接(Connect with SSO)(可选)点击 TRUE(是) 或 FALSE(否) 以通过 SSO 连接新管理员账户。
  1. 点击 添加新用户(Add new user) 窗口右下角的 邀请用户(Invite user) 按钮。
  2. 窗口顶部会出现一个 URL:它是发送给新管理员、供其首次登录你的 Strapi 应用的 URL。点击复制按钮 复制该 URL。
  3. 点击右下角的 完成(Finish) 按钮以完成新管理员账户的创建。新管理员现在应该列在表中。
NOTE

管理员邀请 URL 在管理员账户被激活之前都是可访问的。

删除账户

可以同时删除一个或多个管理员账户。

  1. 点击账户记录右侧的删除按钮 ,或者通过勾选账户记录左侧的复选框选择一个或多个账户,然后点击表格上方的 删除(Delete) 按钮。
  2. 在删除窗口中,点击 确认(Confirm) 按钮以确认删除。

编辑账户

编辑管理员账户

  1. 点击你要编辑账户的管理员姓名。
  2. 在 详细信息(Details) 区域,编辑你选择的账户详细信息:
用户信息说明
名字(First name)在文本框中写入管理员名字。
姓氏(Last name)在文本框中写入管理员姓氏。
电子邮件(Email)在文本框中写入管理员的完整电子邮件地址。
用户名(Username)在文本框中写入管理员的用户名。
密码(Password)在文本框中写入新管理员账户的密码。
确认密码(Confirm password)在文本框中写入新密码以确认。
激活(Active)点击 TRUE(是) 以激活管理员的账户。
  1. (可选)在 角色(Roles) 区域,编辑管理员的角色:
  • 点击下拉列表选择新角色,和/或将其添加到已分配的角色中。
  • 点击删除按钮 删除已分配的角色。
  1. 点击右上角的 保存(Save) 按钮。