应用安全

Home Assistant 根据所需权限对每个应用程序(以前称为附加组件)进行评级。评级为 6 的应用程序非常安全。如果某个应用程序的评级为 1,则除非您 100% 确定可以信任其来源,否则不应运行该应用程序。

API角色

要访问 Supervisor API,您需要定义角色或在默认模式下运行。这仅对于 Supervisor API 是必需的,对于 Home Assistant 代理不是必需的。所有角色都已有权访问默认 API 调用,并且不需要任何其他设置。

可用角色

角色描述
@@保护0@@有权访问所有info 调用
@@保护0@@可以访问所有 Home Assistant API 端点
@@保护0@@可以访问所有备份 API 端点
@@保护0@@适用于运行 CLI 并需要扩展权限的应用程序
@@保护0@@有权访问每个 API 调用。这是他们唯一可以禁用/启用应用程序保护模式的方法

代码公证 CAS

您可以对您的镜像进行签名,还可以验证您构建的基础镜像,以提供完整的信任链。我们的Builderbuild config 支持此功能。要在您的应用程序的 Supervisor 上启用此功能,您只需将您的电子邮件地址添加到应用程序配置 codenotary 中。

保护

默认情况下,所有应用程序都在启用保护的模式下运行。此模式可防止应用程序获得系统上的任何权限。如果应用程序需要更多权限,您可以通过该应用程序的 API 应用程序选项禁用此保护。但要小心,禁用保护的应用程序可能会破坏您的系统!

制作安全的应用程序

作为开发人员,请遵循以下最佳实践来确保您的应用程序安全:

  • 不要在主机网络上运行
  • 创建 AppArmor 配置文件
  • 如果您不需要写入权限,则映射文件夹只读
  • 如果您需要任何 API 访问权限,请确保您没有授予不需要的权限
  • 使用 Codenotary CAS 对图像进行签名

使用 Home Assistant 用户后端

使用 Home Assistant Auth backend,而不是允许用户在纯文本配置中设置新的登录凭据。您可以使用auth_api: true 启用对API 的访问。现在,您可以将登录凭据发送到身份验证后端并在 Home Assistant 中验证它们。

使用 ingress 时对用户进行身份验证

当通过主管的入口访问插件时,可以通过其会话令牌来识别授权用户。然后,主管将一些标识用户的标头添加到每个请求中:

标头名称描述
X-远程-用户 ID经过身份验证的 Home Assistant 用户的 ID
X-远程-用户名经过身份验证的用户的用户名
X-远程-用户-显示-名称经过身份验证的用户的显示名称