All Products
Search
Document Center

Resource Access Management:RAM authorization

Last Updated:Aug 14, 2024
Resource Access Management (RAM) is a service provided by Alibaba Cloud to manage user identities and resource access permissions. You can use RAM to prevent RAM users from sharing the AccessKey pairs of your Alibaba Cloud account. You can also use RAM to grant minimum permissions to RAM users. RAM uses policies to define permissions.
This topic describes the elements, such as Action, Resource, and Condition, which are defined by RAM. You can use the elements to create policies in RAM. The code (RamCode) in RAM that is used to indicate RAM is ram,sts. You can grant permissions on RAM at the RESOURCE.

General structure of a policy

Policies can be stored as JSON files. The following code provides an example on the general structure of a policy:
{
  "Version": "1",
  "Statement": [
    {
      "Effect": "<Effect>",
      "Action": "<Action>",
      "Resource": "<Resource>",
      "Condition": {
        "<Condition_operator>": {
          "<Condition_key>": [
            "<Condition_value>"
          ]
        }
      }
    }
  ]
}
The following list describes the fields in the policy:
  • Effect: specifies the authorization effect. Valid values: Allow, Deny.
  • Action: specifies one or more API operations that are allowed or denied. For more information, see the Action section of this topic.
  • Resource: specifies one or more resources to which the policy applies. You can use an Alibaba Cloud Resource Name (ARN) to specify a resource. For more information, see the Resource section of this topic.
  • Condition: specifies one or more conditions that are required for the policy to take effect. This is an optional field. For more information, see the Condition section of this topic.
    • Condition_operator: specifies the conditional operators. Different types of conditions support different conditional operators. For more information, see Policy elements.
    • Condition_key: specifies the condition keys.
    • Condition_value: specifies the condition values.

Action

RAM defines the values that you can use in the Action element of a policy statement. The following table describes the values.
  • Operation: the value that you can use in the Action element to specify the operation on a resource.
  • API operation: the API operation that you can call to perform the operation.
  • Access level: the access level of each operation. The levels are read, write, and list.
  • Resource type: the type of the resource on which you can authorize the RAM user or the RAM role to perform the operation. Take note of the following items:
    • The required resource types are displayed in bold characters.
    • If the permissions cannot be granted at the resource level, All Resources is used in the Resource type column of the operation.
  • Condition key: the condition keys that are defined by the Alibaba Cloud service. The Condition key column does not list the common condition keys that are defined by Alibaba Cloud. For more information about the common condition keys, see Generic Condition Keyword.
  • Associated operation: other operations that the RAM user or the RAM role must have permissions to perform to complete the operation. To complete the operation, the RAM user or the RAM role must have the permissions to perform the associated operations.
ActionsAPI operationAccess levelResource typeCondition keyAssociated operation
ram:ChangePasswordChangePasswordupdate
All Resources
*
NoneNone
ram:ClearAccountAliasClearAccountAliasupdate
All Resources
*
NoneNone
ram:CreateUserCreateUsercreate
User
acs:ram:*:{#accountId}:user/*
NoneNone
ram:UpdateRoleUpdateRoleupdate
Role
acs:ram:*:{#accountId}:role/{#RoleName}
ram:TrustedPrincipalTypes
ram:ServiceNames
None
ram:CreatePolicyCreatePolicycreate
Policy
acs:ram:*:{#accountId}:policy/{#PolicyName}
NoneNone
ram:CreateGroupCreateGroupcreate
Group
acs:ram:*:{#accountId}:group/*
NoneNone
ram:CreatePolicyVersionCreatePolicyVersioncreate
Policy
acs:ram:*:{#accountId}:policy/{#PolicyName}
NoneNone
ram:GetPolicyVersionGetPolicyVersionget
Policy
acs:ram:*:{#accountId}:policy/{#PolicyName}
Policy
acs:ram:*:system:policy/{#PolicyName}
NoneNone
ram:GetLoginProfileGetLoginProfileget
User
acs:ram:*:{#accountId}:user/{#UserName}
NoneNone
ram:ListUsersListUsersget
User
acs:ram:*:{#accountId}:user/*
NoneNone
ram:DeleteLoginProfileDeleteLoginProfiledelete
User
acs:ram:*:{#accountId}:user/{#UserName}
NoneNone
ram:DeletePolicyDeletePolicydelete
Policy
acs:ram:*:{#accountId}:policy/{#PolicyName}
NoneNone
ram:GetGroupGetGroupget
Group
acs:ram:*:{#accountId}:group/{#GroupName}
NoneNone
ram:ListPoliciesForGroupListPoliciesForGroupget
Group
acs:ram:*:{#accountId}:group/{#GroupName}
NoneNone
ram:ListPoliciesForUserListPoliciesForUserget
User
acs:ram:*:{#accountId}:user/{#UserName}
NoneNone
ram:UnbindMFADeviceUnbindMFADeviceupdate
User
acs:ram:*:{#accountId}:user/{#UserName}
NoneNone
ram:DeleteUserDeleteUserdelete
User
acs:ram:*:{#accountId}:user/{#UserName}
NoneNone
ram:SetAccountAliasSetAccountAliasupdate
All Resources
*
NoneNone
ram:ListVirtualMFADevicesListVirtualMFADevicesget
MFADevice
acs:ram:*:{#accountId}:mfa/*
NoneNone
ram:SetSecurityPreferenceSetSecurityPreferenceupdate
All Resources
*
NoneNone
ram:GetSecurityPreferenceGetSecurityPreferenceget
All Resources
*
NoneNone
ram:ListGroupsListGroupsget
Group
acs:ram:*:{#accountId}:group/*
NoneNone
ram:SetPasswordPolicySetPasswordPolicyupdate
All Resources
*
NoneNone
ram:ListUsersForGroupListUsersForGroupget
Group
acs:ram:*:{#accountId}:group/{#GroupName}
NoneNone
ram:GetPasswordPolicyGetPasswordPolicyget
All Resources
*
NoneNone
ram:AttachPolicyToGroupAttachPolicyToGroupupdate
Group
acs:ram:*:{#accountId}:group/{#GroupName}
Policy
acs:ram:*:{#accountId}:policy/{#PolicyName}
Policy
acs:ram:*:system:policy/{#PolicyName}
NoneNone
ram:UpdateAccessKeyUpdateAccessKeyupdate
User
acs:ram:*:{#accountId}:user/{#UserName}
NoneNone
ram:ListEntitiesForPolicyListEntitiesForPolicyget
Policy
acs:ram:*:system:policy/{#PolicyName}
Policy
acs:ram:*:{#accountId}:policy/{#PolicyName}
NoneNone
ram:DeletePolicyVersionDeletePolicyVersiondelete
Policy
acs:ram:*:{#accountId}:policy/{#PolicyName}
NoneNone
ram:AttachPolicyToUserAttachPolicyToUserupdate
Policy
acs:ram:*:{#accountId}:policy/{#PolicyName}
User
acs:ram:*:{#accountId}:user/{#UserName}
Policy
acs:ram:*:system:policy/{#PolicyName}
NoneNone
ram:UpdatePolicyDescriptionUpdatePolicyDescriptionupdate
Policy
acs:ram:*:{#accountId}:policy/{#PolicyName}
NoneNone
ram:ListGroupsForUserListGroupsForUserget
User
acs:ram:*:{#accountId}:user/{#UserName}
NoneNone
ram:ListPolicyVersionsListPolicyVersionsget
Policy
acs:ram:*:{#accountId}:policy/{#PolicyName}
Policy
acs:ram:*:system:policy/{#PolicyName}
NoneNone
ram:AttachPolicyToRoleAttachPolicyToRoleupdate
Policy
acs:ram:*:{#accountId}:policy/{#PolicyName}
Role
acs:ram:*:{#accountId}:role/{#RoleName}
Policy
acs:ram:*:system:policy/{#PolicyName}
ram:TrustedPrincipalTypes
ram:ServiceNames
None
ram:ListRolesListRolesget
Role
acs:ram:*:{#accountId}:role/*
NoneNone
ram:BindMFADeviceBindMFADeviceWrite
User
acs:ram:*:{#accountId}:user/{#UserName}
NoneNone
ram:UpdateGroupUpdateGroupupdate
Group
acs:ram:*:{#accountId}:group/{#GroupName}
NoneNone
ram:DetachPolicyFromGroupDetachPolicyFromGroupupdate
Group
acs:ram:*:{#accountId}:group/{#GroupName}
Policy
acs:ram:*:system:policy/{#PolicyName}
Policy
acs:ram:*:{#accountId}:policy/{#PolicyName}
NoneNone
ram:GetUserMFAInfoGetUserMFAInfoget
User
acs:ram:*:{#accountId}:user/{#UserName}
NoneNone
ram:GetRoleGetRoleget
Role
acs:ram:*:{#accountId}:role/{#RoleName}
NoneNone
ram:CreateVirtualMFADeviceCreateVirtualMFADevicecreate
MFADevice
acs:ram:*:{#accountId}:mfa/*
NoneNone
ram:DetachPolicyFromRoleDetachPolicyFromRoleupdate
Policy
acs:ram:*:{#accountId}:policy/{#PolicyName}
Role
acs:ram:*:{#accountId}:role/{#RoleName}
Policy
acs:ram:*:system:policy/{#PolicyName}
ram:TrustedPrincipalTypes
ram:ServiceNames
None
ram:RemoveUserFromGroupRemoveUserFromGroupupdate
Group
acs:ram:*:{#accountId}:group/{#GroupName}
User
acs:ram:*:{#accountId}:user/{#UserName}
NoneNone
ram:UpdateUserUpdateUserupdate
User
acs:ram:*:{#accountId}:user/{#UserName}
NoneNone
ram:AddUserToGroupAddUserToGroupcreate
Group
acs:ram:*:{#accountId}:group/{#GroupName}
User
acs:ram:*:{#accountId}:user/{#UserName}
NoneNone
ram:CreateRoleCreateRolecreate
Role
acs:ram:*:{#accountId}:role/{#RoleName}
ram:TrustedPrincipalTypes
ram:ServiceNames
None
ram:SetDefaultPolicyVersionSetDefaultPolicyVersionupdate
Policy
acs:ram:*:{#accountId}:policy/{#PolicyName}
NoneNone
ram:ListPoliciesListPoliciesget
Policy
acs:ram:*:{#accountId}:policy/*
NoneNone
ram:DecodeDiagnosticMessageDecodeDiagnosticMessageget
All Resources
*
NoneNone
ram:CreateLoginProfileCreateLoginProfilecreate
User
acs:ram:*:{#accountId}:user/{#UserName}
NoneNone
ram:ListAccessKeysListAccessKeysget
User
acs:ram:*:{#accountId}:user/{#UserName}
NoneNone
ram:DetachPolicyFromUserDetachPolicyFromUserupdate
Policy
acs:ram:*:{#accountId}:policy/{#PolicyName}
User
acs:ram:*:{#accountId}:user/{#UserName}
Policy
acs:ram:*:system:policy/{#PolicyName}
NoneNone
ram:ListPoliciesForRoleListPoliciesForRoleget
Role
acs:ram:*:{#accountId}:role/{#RoleName}
NoneNone
ram:DeleteRoleDeleteRoledelete
Role
acs:ram:*:{#accountId}:role/{#RoleName}
ram:TrustedPrincipalTypes
ram:ServiceNames
None
ram:UpdateLoginProfileUpdateLoginProfileupdate
User
acs:ram:*:{#accountId}:user/{#UserName}
NoneNone
ram:DeleteGroupDeleteGroupdelete
Group
acs:ram:*:{#accountId}:group/{#GroupName}
NoneNone
ram:GetPolicyGetPolicyget
Policy
acs:ram:*:system:policy/{#PolicyName}
Policy
acs:ram:*:{#accountId}:policy/{#PolicyName}
NoneNone
ram:GetAccountAliasGetAccountAliasget
All Resources
*
NoneNone
ram:CreateAccessKeyCreateAccessKeycreate
User
acs:ram:*:{#accountId}:user/{#UserName}
NoneNone
ram:GetUserGetUserget
User
acs:ram:*:{#accountId}:user/{#UserName}
NoneNone
ram:DeleteAccessKeyDeleteAccessKeydelete
User
acs:ram:*:{#accountId}:user/{#UserName}
NoneNone
ram:DeleteVirtualMFADeviceDeleteVirtualMFADevicedelete
MFADevice
acs:ram:*:{#accountId}:mfa/{#SerialNumber}
NoneNone

Resource

RAM defines the values that you can use in the Resource. You can attach the policy to a RAM user or a RAM role so that the RAM user or the RAM role can perform a specific operation on a specific resource. The ARN is the unique identifier of the resource on Alibaba Cloud. Take note of the following items:
  • {#}indicates a variable. {#} must be replaced with an actual value. For example, {#ramcode} must be replaced with the actual code of an Alibaba Cloud service in RAM.
  • An asterisk (*) is used as a wildcard. Examples:
    • {#resourceType} is set to *, all resources are specified.
    • {#regionId} is set to *, all regions are specified.
    • {#accountId} is set to *, all Alibaba Cloud accounts are specified.
Resource typeARN
Useracs:ram:*:{#accountId}:user/{#UserName}
Unrestrictedacs:ram:*:{#accountId}:*
Useracs:ram::{#accountId}:user/{#UserName}
Useracs:ram:*:{#accountId}:user/*
Roleacs:ram:*:{#accountId}:role/{#RoleName}
Policyacs:ram:*:{#accountId}:policy/{#PolicyName}
Groupacs:ram:*:{#accountId}:group/*
Policyacs:ram:*:system:policy/{#PolicyName}
Groupacs:ram:*:{#accountId}:group/{#GroupName}
User{#Arn}
MFADeviceacs:ram:*:{#accountId}:mfa/*
Roleacs:ram:*:{#accountId}:role/*
Policyacs:ram:*:{#accountId}:policy/*
MFADeviceacs:ram:*:{#accountId}:mfa/{#SerialNumber}

Condition

RAM defines the values that you can use in the Condition element of a policy statement. The following table describes the values. The following table describes the service-specific condition keys. The common condition keys that are defined by Alibaba Cloud also apply to RAM. For more information about the common condition keys, see Generic Condition Keyword.
The data type determines the conditional operators that you can use to compare the value in a request with the value in a policy statement. You must use conditional operators that are supported by the data type. Otherwise, you cannot compare the value in the request with the value in the policy statement. In this case, the authorization is invalid. For more information about the conditional operators that are supported by each data type, see Policy elements.
Condition keyDescriptionData type
acs:ServiceSpecifies the service principal which a role can be passed. This condition key applies to only the PassRole action in a policy. Example: actiontrail.aliyuncs.comString
ram:TrustedPrincipalTypesSpecifies the type of trusted entities for the role. Multivalued.String
ram:ServiceNamesSpecifies the trusted service principals for service role. Multivalued. Example: [&quot;ecs.aliyun.com&quot;,&quot;rds.aliyuncs.com&quot;]String

What to do next

You can create a custom policy and attach the policy to a RAM user, RAM user group, or RAM role. For more information, see the following topics: