Permissions
If you need to assign different permissions to personnel in your enterprise to access your RDS resources, Identity and Access Management (IAM) is a good choice for fine-grained permissions management. IAM provides identity authentication, permissions management, and access control, helping you to securely access your cloud resources.
With IAM, you can create IAM users and assign permissions to control their access to specific resources. For example, if you want some software developers in your enterprise to use RDS resources but do not want them to delete RDS instances or perform any other high-risk operations, you can create IAM users and grant permission to use RDS instances but not permission to delete them.
If your Huawei account does not require individual IAM users for permissions management, you can skip this section.
IAM is a free service. You only pay for the resources in your account. For more information about IAM, see IAM Service Overview.
RDS Permissions
New IAM users do not have any permissions assigned by default. You need to first add them to one or more groups and attach policies or roles to these groups. The users then inherit permissions from the groups and can perform specified operations on cloud services based on the permissions they have been assigned.
RDS is a project-level service deployed for specific regions. When you set Scope to Region-specific projects and select the specified projects in the specified regions, the users only have permissions for RDS instances in the selected projects. If you set Scope to All resources, the users have permissions for RDS instances in all region-specific projects. When accessing RDS instances, the users need to switch to the authorized region.
- Roles: A coarse-grained authorization strategy provided by IAM to assign permissions based on users' job responsibilities. Only a limited number of service-level roles are available for authorization. Cloud services depend on each other. When you grant permissions using roles, you also need to attach any existing role dependencies. Roles are not ideal for fine-grained authorization and least privilege access.
- Policies: A fine-grained authorization strategy that defines permissions required to perform operations on specific cloud resources under certain conditions. This type of authorization is more flexible and is ideal for least privilege access. For example, you can grant users only permission to manage database resources of a certain type. A majority of fine-grained policies contain permissions for specific APIs, and permissions are defined using API actions. For the API actions supported by RDS, see Permissions and Supported Actions.
Table 1 lists all the system-defined permissions for RDS.
Role/Policy Name |
Description |
Type |
Dependencies |
---|---|---|---|
RDS FullAccess |
Full permissions for Relational Database Service |
System-defined policy |
To purchase a yearly/monthly DB instance, configure the following actions: bss:order:update bss:order:pay
To use storage autoscaling, configure the following actions for IAM users:
To create a yearly/monthly instance using a RAM-based shared KMS key, configure the following actions:
RDS FullAccess already contains the iam:agencies:listAgencies, iam:roles:listRoles, and iam:agencies:pass actions. RDS is a region-level service, and IAM is a global service. If you want to grant RDS FullAccess to a project, grant BSS ServiceAgencyReadPolicy (global service) to it as well. Granting RDS FullAccess to all projects eliminates the need for additional configuration when using IAM actions. BSS ServiceAgencyCreatePolicy contains the following actions: iam:agencies:createAgency and iam:permissions:grantRoleToAgency. |
RDS ReadOnlyAccess |
Read-only permissions for Relational Database Service |
System-defined policy |
N/A |
RDS ManageAccess |
Database administrator permissions for all operations except deleting RDS resources |
System-defined policy |
N/A |
RDS Administrator |
Administrator permissions for RDS |
System-defined role |
Tenant Guest and Server Administrator roles, which must be attached in the same project as the RDS Administrator role |
Table 2 lists the common operations supported by system-defined permissions for RDS.
Operation |
RDS FullAccess |
RDS ReadOnlyAccess |
RDS ManageAccess |
RDS Administrator |
---|---|---|---|---|
Creating an RDS DB instance |
√ |
x |
√ |
√ |
Deleting an RDS DB instance |
√ |
x |
x |
√ |
Querying an RDS DB instance list |
√ |
√ |
√ |
√ |
Operation |
Actions |
Remarks |
---|---|---|
Creating a DB instance |
rds:instance:create rds:param:list |
To select a VPC, subnet, and security group, configure the following actions: vpc:vpcs:list vpc:vpcs:get vpc:subnets:get vpc:securityGroups:get To create an encrypted instance, configure the KMS Administrator permission for the project. To purchase a yearly/monthly DB instance, configure the following actions: bss:order:update bss:order:pay |
Changing DB instance specifications |
rds:instance:modifySpec |
N/A |
Scaling up storage space |
rds:instance:extendSpace |
N/A |
Changing a DB instance type from single to primary/standby |
rds:instance:singleToHa |
If the original single DB instance is encrypted, you need to configure the KMS Administrator permission in the project. |
Rebooting a DB instance |
rds:instance:restart |
N/A |
Deleting a DB instance |
rds:instance:delete |
N/A |
Querying a DB instance list |
rds:instance:list |
N/A |
Querying DB instance details |
rds:instance:list |
If the VPC, subnet, and security group are displayed in the DB instance list, you need to configure vpc:*:get and vpc:*:list. |
Changing a DB instance password |
rds:password:update |
N/A |
Changing a database port |
rds:instance:modifyPort |
N/A |
Changing a floating IP address |
rds:instance:modifyIp |
To query the list of unused IP addresses, configure the following actions: vpc:subnets:get vpc:ports:get |
Changing a DB instance name |
rds:instance:modify |
N/A |
Changing a maintenance window |
rds:instance:modify |
N/A |
Performing a manual switchover |
rds:instance:switchover |
N/A |
Changing the replication mode |
rds:instance:modifySynchronizeModel |
N/A |
Changing the failover priority |
rds:instance:modifyStrategy |
N/A |
Changing a security group |
rds:instance:modifySecurityGroup |
N/A |
Binding or unbinding an EIP |
rds:instance:modifyPublicAccess |
To query public IP addresses, configure the following actions: vpc:publicIps:get vpc:publicIps:list |
Modifying the recycling policy |
rds:instance:setRecycleBin |
N/A |
Querying the recycling policy |
rds:instance:list |
N/A |
Enabling or disabling SSL |
rds:instance:modifySSL |
N/A |
Enabling or disabling event scheduler |
rds:instance:modifyEvent |
N/A |
Configuring read/write splitting |
rds:instance:modifyProxy |
N/A |
Applying for a private domain name |
rds:instance:createDns |
N/A |
Migrating a standby DB instance to another AZ |
rds:instance:create |
Standby DB instance migration involves operations on the IP address in the subnet. For encrypted DB instances, you need to configure the KMS Administrator permission in the project. |
Restoring tables to a specified point in time |
rds:instance:tableRestore |
N/A |
Configuring TDE permission |
rds:instance:tde |
Only used for RDS for SQL Server DB instances. |
Changing host permission |
rds:instance:modifyHost |
N/A |
Querying hosts of the corresponding database account |
rds:instance:list |
N/A |
Obtaining a parameter template list |
rds:param:list |
N/A |
Creating a parameter template |
rds:param:create |
N/A |
Modifying parameters in a parameter template |
rds:param:modify |
N/A |
Applying a parameter template |
rds:param:apply |
N/A |
Modifying parameters of a specified DB instance |
rds:param:modify |
N/A |
Obtaining the parameter template of a specified DB instance |
rds:param:list |
N/A |
Obtaining parameters of a specified parameter template |
rds:param:list |
N/A |
Deleting a parameter template |
rds:param:delete |
N/A |
Resetting a parameter template |
rds:param:reset |
N/A |
Comparing parameter templates |
rds:param:list |
N/A |
Saving parameters in a parameter template |
rds:param:save |
N/A |
Querying a parameter template type |
rds:param:list |
N/A |
Setting an automated backup policy |
rds:instance:modifyBackupPolicy |
N/A |
Querying an automated backup policy |
rds:instance:list |
N/A |
Creating a manual backup |
rds:backup:create |
N/A |
Obtaining a backup list |
rds:backup:list |
N/A |
Obtaining the link for downloading a backup file |
rds:backup:download |
N/A |
Deleting a manual backup |
rds:backup:delete |
N/A |
Replicating a backup |
rds:backup:create |
N/A |
Querying the restoration time range |
rds:instance:list |
N/A |
Restoring data to a new DB instance |
rds:instance:create |
To select a VPC, subnet, and security group, configure the following actions: vpc:vpcs:list vpc:vpcs:get vpc:subnets:get vpc:securityGroups:get |
Restoring data to an existing or original DB instance |
rds:instance:restoreInPlace |
N/A |
Obtaining the binlog clearing policy |
rds:binlog:get |
N/A |
Merging binlog files |
rds:binlog:merge |
N/A |
Downloading a binlog file |
rds:binlog:download |
N/A |
Deleting a binlog file |
rds:binlog:delete |
N/A |
Configuring a binlog clearing policy |
rds:binlog:setPolicy |
N/A |
Obtaining a database backup file list |
rds:backup:list |
N/A |
Obtaining a backup database list at a specified time point |
rds:backup:list |
N/A |
Querying a database error log |
rds:log:list |
N/A |
Querying a database slow log |
rds:log:list |
N/A |
Downloading a database error log |
rds:log:download |
N/A |
Downloading a database slow log |
rds:log:download |
N/A |
Enabling or disabling the audit log function |
rds:auditlog:operate |
N/A |
Obtaining an audit log list |
rds:auditlog:list |
N/A |
Querying the audit log policy |
rds:auditlog:list |
N/A |
Obtaining the link for downloading an audit log |
rds:auditlog:download |
N/A |
Obtaining a switchover log |
rds:log:list |
N/A |
Creating a database |
rds:database:create |
N/A |
Querying details about databases |
rds:database:list |
N/A |
Querying authorized databases of a specified user |
rds:database:list |
N/A |
Dropping a database |
rds:database:drop |
N/A |
Creating a database account |
rds:databaseUser:create |
N/A |
Querying details about database accounts |
rds:databaseUser:list |
N/A |
Querying authorized accounts of a specified database |
rds:databaseUser:list |
N/A |
Deleting a database account |
rds:databaseUser:drop |
N/A |
Authorizing a database account |
rds:databasePrivilege:grant |
N/A |
Revoking permissions of a database account |
rds:databasePrivilege:revoke |
N/A |
Viewing a task center list |
rds:task:list |
N/A |
Deleting a task from the task center |
rds:task:delete |
N/A |
Submitting an order for a yearly/monthly DB instance |
bss:order:update |
To purchase a yearly/monthly DB instance, configure the following actions: bss:order:pay |
Managing a tag |
rds:instance:modify |
Tag-related operations depend on the tms:resourceTags:* permission. |
Configuring autoscaling |
rds:instance:extendSpace |
To enable autoscaling, configure the following actions for the IAM users instead of your Huawei account:
|
Stopping or starting a DB instance |
rds:instance:operateServer |
N/A |
Stopping an instance |
rds:instance:stop |
N/A |
Starting an instance |
rds:instance:start |
N/A |
Modifying the remarks of a database account |
rds:databaseUser:update |
N/A |
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
For any further questions, feel free to contact us through the chatbot.
Chatbot