system:serviceaccount:<project>:<name>
服务帐户是一个 OpenShift Container Platform 帐户,允许组件直接访问 API。服务帐户是在每个项目中存在的 API 对象。服务帐户提供了一种灵活的方式来控制 API 访问,而无需共享普通用户的凭据。
当您使用 OpenShift Container Platform CLI 或 Web 控制台时,您的 API 令牌会将您认证到 API。您可以将组件与服务帐户关联,以便它们可以访问 API,而无需使用普通用户的凭据。例如,服务帐户可以允许
复制控制器进行 API 调用以创建或删除 Pod。
容器内的应用程序进行 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 来添加角色
|