Role-based access control (RBAC) regulates access to resources based on the roles of users. You can grant multiple permissions to cluster roles and configure different permission policies for different roles. This improves account security. You can grant RBAC permissions to Resource Access Management (RAM) users or RAM roles to allow them to access Kubernetes resources in a Container Service for Kubernetes (ACK) cluster that is not created by the RAM users or RAM roles.
Table of contents
Configurations
Configuration item | Description |
Default permissions |
|
Authorization methods |
Note Before you grant permissions to a RAM user or RAM role, make sure that the RAM user or RAM role is granted read-only permissions on the specified cluster in the RAM console. |
Authorization models | You can grant permissions to one or more RAM users or RAM roles at a time. |
To ensure data security, you are not allowed to modify RAM policies that are attached to your RAM users or RAM roles in the ACK console. You must read the instructions on the authorization page, log on to the RAM console, and then modify the RAM policies.
Grant RBAC permissions to RAM users or RAM roles
Log on to the ACK console. In the left-side navigation pane, click Authorizations.
On the Authorizations page, grant permissions.
Grant permissions to a RAM user
Click the RAM Users tab. In the RAM user list, find the RAM user that you want to manage and click Modify Permissions in the Actions column. The Permission Management panel appears.
Grant permissions to a RAM role
Click the RAM Roles tab, configure the RAM Role Name parameter and click Modify Permissions. The Permission Management panel appears.
NoteIf you want to use a RAM user or RAM role to grant permissions to other RAM users or RAM roles, make sure that the RAM user or RAM role has been granted RAM permissions on the cluster that you want to manage. For more information, see Create a custom RAM policy. In addition, the RAM user or RAM role must be assigned the Administrator role or cluster-admin role of the cluster.
Click Add Permissions, configure the Clusters, Namespace, and Permission Management parameters for the RAM user or RAM role, and then click Submit.
NoteACK provides the following predefined roles: Administrator, O&M Engineer, Developer, and Restricted User. You can use these roles to regulate access to resources in the ACK console in most scenarios. You can also use custom roles to define permissions on clusters based on your business requirements.
You can assign one predefined role and multiple custom roles of a cluster or namespace to a RAM user or RAM role.
If you want to authorize a RAM user or RAM role to manage all clusters, including newly created clusters, select All Clusters in the Clusters column when you assign a predefined role to the RAM user or RAM role.
Use a RAM user or RAM role to grant RBAC permissions to other RAM users or RAM roles
By default, you cannot use a RAM user or RAM role to grant RBAC permissions to other RAM users or RAM roles. If you want to use a RAM user or RAM role to grant RBAC permissions to other RAM users or RAM roles, you must first use the Alibaba Cloud account or a RAM user that is assigned the Administrator role of all clusters to grant the required permissions to the RAM user or RAM role.
RAM permission
You must attach a RAM policy to the RAM user or RAM role. The RAM policy must provide the following permissions:
The permissions to view other RAM users that belong to the same Alibaba Cloud account.
The permissions to attach RAM policies to other RAM users or RAM roles.
The permissions to view information about ACK clusters.
The permissions to view permissions of RBAC roles.
The permissions to assign RBAC roles to other RAM users or RAM roles.
Log on to the RAM console and use the following sample code to grant the required permissions to the RAM user or RAM role. For more information, see Create a custom RAM policy.
Replace xxxxxx
with the name of the RAM policy you want to authorize the RAM user or RAM role to attach to other RAM users or RAM roles. If you replace xxxxxx with an asterisk (*), the RAM user or RAM role is authorized to attach all RAM policies to other RAM users or RAM roles.
{
"Statement": [{
"Action": [
"ram:Get*",
"ram:List*",
"cs:Get*",
"cs:Describe*",
"cs:List*",
"cs:GrantPermission"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"ram:AttachPolicyToUser",
"ram:AttachPolicy"
],
"Effect": "Allow",
"Resource": [
"acs:ram:*:*:policy/xxxxxx",
"acs:*:*:*:user/*"
]
}
],
"Version": "1"
}
After the RAM policy is attached to the RAM user or RAM role, you can use the RAM user or RAM role to attach the specified RAM policies to other RAM users or RAM roles.
RBAC permissions
After you attach the preceding RAM policy to the RAM user or RAM role, you must assign the Administrator or cluster-admin role to the RAM user or RAM role to allow them to access the specified cluster or namespace. For more information, see the Grant RBAC permissions to RAM users or RAM roles section of this topic.
Set a RAM user or RAM role as a permission administrator
If you do not want to use an Alibaba Cloud account to assign RBAC roles to RAM users or RAM roles, you can set a RAM user or RAM role as a permission administrator and then use the RAM user or RAM role to grant permissions to other RAM users or RAM roles.
Log on to the RAM console and find the RAM user or RAM role that you want to set as a permission administrator.
RAM user
In the left-side navigation pane of the RAM console, choose
. Find the RAM user that you want to use and click Add Permissions in the Actions column.RAM role
In the left-side navigation pane of the RAM console, choose
. Find the RAM role that you want to use and click Grant Permissions in the Actions column.
In the Grant Permission panel, configure the Resource Scope parameter, select System Policy from the drop-down list, find and click the AliyunRAMReadOnlyAccess and AliyunCSFullAccess system policies to add them to the right-side Selected Policy section, and then click Grant permissions. After the policies are attached, click Close.
Log on to the ACK console by using your Alibaba Cloud account and assign the Administrator role of all clusters to the RAM user or RAM role.
For more information, see the Grant RBAC permissions to RAM users or RAM roles section of this topic.
After the preceding steps are complete, the RAM user or RAM role is set as a permission administrator. You can use the RAM user or RAM role to grant RAM permissions and RBAC permissions to other RAM users or RAM roles.
Error codes for insufficient permissions
If you do not have the required permissions when you use the ACK console or call the ACK API to perform an operation, the console or API returns an error code that indicates the required permissions. The following table describes the error codes that indicate the required RBAC permissions on the cluster.
Error code or error message | Required RBAC permission on the cluster |
ForbiddenCheckControlPlaneLog | Permissions of Administrator or O&M Engineer |
ForbiddenHelmUsage | Administrator permissions |
ForbiddenRotateCert | Administrator permissions |
ForbiddenAttachInstance | Permissions of Administrator or O&M Engineer |
ForbiddenUpdateKMSState | Permissions of Administrator or O&M Engineer |
Forbidden get trigger | Permissions of Administrator, O&M Engineer, or Developer |
ForbiddenQueryClusterNamespace | Permissions of Administrator, O&M Engineer, Developer, or Restricted User |
References
For more information about the authorization system of ACK, see Best practices of authorization.
For more information about ACK roles, see ACK roles.
For more information about the issues related to authorization, see FAQ about authorization management.