system:serviceaccount:<project>:<name>
服务账号是一个 OpenShift Dedicated 账号,允许组件直接访问 API。服务账号是存在于每个项目中的 API 对象。服务账号提供了一种灵活的方式来控制 API 访问,而无需共享普通用户的凭据。
当您使用 OpenShift Dedicated CLI 或 Web 控制台时,您的 API 令牌会将您认证到 API。您可以将组件与服务账号关联,以便它们可以访问 API 而无需使用普通用户的凭据。
每个服务账号的用户名都来源于其项目和名称
system:serviceaccount:<project>:<name>
每个服务账号也是两个组的成员
组 | 描述 |
---|---|
system:serviceaccounts |
包含系统中的所有服务账号。 |
system:serviceaccounts:<project> |
包含指定项目中的所有服务账号。 |
每个服务账号自动包含两个密钥
一个 API 令牌
OpenShift Container Registry 的凭据
生成的 API 令牌和注册表凭据不会过期,但您可以通过删除密钥来撤销它们。当您删除密钥时,会自动生成一个新的密钥来代替它。
您可以在项目中创建一个服务账号,并通过将其绑定到角色来授予其权限。
可选:查看当前项目中的服务账号
$ oc get sa
NAME SECRETS AGE
builder 2 2d
default 2 2d
deployer 2 2d
在当前项目中创建一个新的服务账号
$ oc create sa <service_account_name> (1)
1 | 要在不同的项目中创建服务账号,请指定 -n <project_name> 。 |
serviceaccount "robot" created
您可以选择应用以下 YAML 来创建服务账号
|
可选:查看服务账号的密钥
$ oc describe sa robot
Name: robot
Namespace: project1
Labels: <none>
Annotations: <none>
Image pull secrets: robot-dockercfg-qzbhb
Mountable secrets: robot-dockercfg-qzbhb
Tokens: robot-token-f4khf
Events: <none>
您可以像向普通用户帐户授予角色一样,向服务帐户授予角色。
您可以修改当前项目的服务帐户。例如,要将 `view` 角色添加到 `top-secret` 项目中的 `robot` 服务帐户
$ oc policy add-role-to-user view system:serviceaccount:top-secret:robot
您可以选择应用以下 YAML 来添加角色
|
您也可以向项目中的特定服务帐号授予访问权限。例如,从服务帐号所属的项目中,使用-z
标志并指定<service_account_name>
$ oc policy add-role-to-user <role_name> -z <service_account_name>
如果您想向项目中的特定服务帐号授予访问权限,请使用 |
您可以选择应用以下 YAML 来添加角色
|
要修改不同的命名空间,您可以使用-n
选项来指示它适用的项目命名空间,如下例所示。
例如,要允许所有项目中的所有服务帐号查看my-project
项目中的资源
$ oc policy add-role-to-group view system:serviceaccounts -n my-project
您可以选择应用以下 YAML 来添加角色
|
要允许managers
项目中的所有服务帐号编辑my-project
项目中的资源
$ oc policy add-role-to-group edit system:serviceaccounts:managers -n my-project
您可以选择应用以下 YAML 来添加角色
|