RAM authorization

更新时间:
复制 MD 格式

Resource Access Management (RAM) is a service provided by Alibaba Cloud to manage user identities and resource access permissions. Using RAM helps you avoid sharing your Alibaba Cloud account keys with other users and allows you to grant users the least privilege access. RAM uses permission policies to define authorizations. This topic describes the general structure of a RAM policy, and the policy statement elements (Action, Resource, and Condition) defined by Resource Access Management for RAM permission policies. The RAM code (RamCode) for Resource Access Management is ram,ims , and the supported authorization granularity is RESOURCE .

General structure of a policy

Permission policies support JSON format with the following general structure:

{
  "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:

  • Version: Specifies the policy version number. It is fixed at 1.

  • Statement:

    • Effect: Specifies the authorization result. Valid values: Allow and Deny.

    • Action: Specifies one or more operations that are allowed or denied.

    • Resource: Specifies the specific objects affected by the operations. You can use Alibaba Cloud Resource Names (ARNs) to describe specific resources.

    • Condition: Specifies the conditions for the authorization to take effect. This field is optional.

      • Condition operator: Specifies the conditional operators. Different types of conditions support different conditional operators.

      • Condition_key: Specifies the condition keys.

      • Condition_value: Specifies the condition values.

Action

The following table lists the actions defined by Resource Access Management. The table's columns are detailed below:

  • Action: The actions can be used in the Action element of RAM permission policy statements to grant permissions to perform the operation.

  • API: The API that you can call to perform the action.

  • Access level: The predefined level of access granted for each API. Valid values: create, list, get, update, and delete.

  • Resource type: The type of the resource that support authorization to perform the action. It indicates if the action supports resource-level permission. The specified resource must be compatible with the action. Otherwise, the policy will be ineffective.

    • For APIs with resource-level permissions, required resource types are marked with an asterisk (*). Specify the corresponding ARN in the Resource element of the policy.

    • For APIs without resource-level permissions, it is shown as All Resources. Use an asterisk (*) in the Resource element of the policy.

  • Condition key: The condition keys defined by the service. The key allows for granular control, applying to either actions alone or actions associated with specific resources. In addition to service-specific condition keys, Alibaba Cloud provides a set of common condition keys that are applicable across all RAM-integrated services. For more information, see Common condition keys.

  • Dependent action: The dependent actions required to run the action. To complete the action, the RAM user or the RAM role must have the permissions to perform all dependent actions.

Action

API

Access level

Resource type

Condition key

Dependent action

ram:RemoveUserFromGroup RemoveUserFromGroup delete

*Group

acs:ram::{#accountId}:group/{#GroupName}

*User

acs:ram::{#accountId}:user/{#UserName}

None None
ram:ListSAMLProviders ListSAMLProviders list

*All Resource

*

None None
ram:RemoveFingerprintFromOIDCProvider RemoveFingerprintFromOIDCProvider delete

*OIDCProvider

acs:ram::{#accountId}:oidc-provider/{#OIDCProviderName}

ram:OidcIssuerUrl

None
ram:GetUserMFAInfo GetUserMFAInfo get

*User

acs:ram::{#accountId}:user/{#UserName}

None None
ram:GetSAMLProvider GetSAMLProvider get

*SAMLProvider

acs:ram::{#accountId}:saml-provider/{#SAMLProviderName}

None None
ram:DeleteOIDCProvider DeleteOIDCProvider delete

*OIDCProvider

acs:ram::{#accountId}:oidc-provider/{#OIDCProviderName}

ram:OidcIssuerUrl

None
ram:DeprovisionApplication DeprovisionApplication update

*Application

acs:ram::{#accountId}:application/{#AppName}

None None
ram:SetVerificationInfo SetVerificationInfo update

*All Resource

*

None None
ram:ListAppSecretIds ListAppSecretIds list

*Application

acs:ram::{#accountId}:application/{#AppName}

None None
ram:GenerateGovernanceReport GenerateGovernanceReport create

*All Resource

*

None None
ram:UpdateAccessKey UpdateAccessKey update

*User

acs:ram::{#accountId}:user/{#UserName}

None None
ram:DeprovisionExternalApplication DeprovisionExternalApplication update

*All Resource

*

None None
ram:ListAccessKeysInRecycleBin ListAccessKeysInRecycleBin list

*All Resource

*

None None
ram:GetUserSsoSettings GetUserSsoSettings get

*All Resource

*

None None
ram:CreateApplication CreateApplication create

*All Resource

*

None None
ram:CreateLoginProfile CreateLoginProfile create

*User

acs:ram::{#accountId}:user/{#UserName}

None None
ram:DisableVirtualMFA DisableVirtualMFA update

*User

acs:ram::{#accountId}:user/{#UserName}

None None
ram:GetUser GetUser get

*User

acs:ram::{#accountId}:user/{#UserName}

None None
ram:ListUsers ListUsers list

*User

acs:ram::{#accountId}:user/*

None None
ram:ListVirtualMFADevices ListVirtualMFADevices list

*MFADevice

acs:ram::{#accountId}:mfa/*

None None
ram:UpdateLoginProfile UpdateLoginProfile update

*User

acs:ram::{#accountId}:user/{#UserName}

None None
ram:BindMFADevice BindMFADevice update

*User

acs:ram::{#accountId}:user/{#UserName}

None None
ram:UnbindMFADevice UnbindMFADevice update

*User

acs:ram::{#accountId}:user/{#UserName}

None None
ram:GetGovernanceItemReport GetGovernanceItemReport get

*All Resource

*

None None
ram:RemoveClientIdFromOIDCProvider RemoveClientIdFromOIDCProvider delete

*OIDCProvider

acs:ram::{#accountId}:oidc-provider/{#OIDCProviderName}

ram:OidcIssuerUrl

None
ram:GetAccessKeyLastUsed GetAccessKeyLastUsed get

*User

acs:ram::{#accountId}:user/{#UserName}

None None
ram:CreateAccessKey CreateAccessKey create

*User

acs:ram::{#accountId}:user/{#UserName}

None None
ram:RestoreUserFromRecycleBin RestoreUserFromRecycleBin delete

*All Resource

*

None None
ram:ProvisionApplication ProvisionApplication update

*All Resource

*

None None
ram:CreateUser CreateUser create

*User

acs:ram::{#accountId}:user/*

None None
ram:GetCredentialReport GetCredentialReport get

*All Resource

*

None None
ram:GetUserInRecycleBin GetUserInRecycleBin get

*All Resource

*

None None
ram:ListApplications ListApplications get

*All Resource

*

None None
ram:SetSecurityPreference SetSecurityPreference update

*All Resource

*

ram:MFAOperationForLogin

None
ram:DeleteAppSecret DeleteAppSecret delete

*Application

acs:ram::{#accountId}:application/{#AppName}

None None
ram:TagResources TagResources update

*All Resource

*

None None
ram:DeletePasskey DeletePasskey none

*All Resource

*

None None
ram:SetPasswordPolicy SetPasswordPolicy update

*All Resource

*

None None
ram:ListExternalApplications ListExternalApplications list

*All Resource

*

None None
ram:DeleteAccessKeyInRecycleBin DeleteAccessKeyInRecycleBin delete

*All Resource

*

None None
ram:GetApplicationProvisionInfo GetApplicationProvisionInfo get

*All Resource

*

None None
ram:UpdateSAMLProvider UpdateSAMLProvider update

*SAMLProvider

acs:ram::{#accountId}:saml-provider/{#SAMLProviderName}

None None
ram:GetOIDCProvider GetOIDCProvider get

*OIDCProvider

acs:ram::{#accountId}:oidc-provider/{#OIDCProviderName}

ram:OidcIssuerUrl

None
ram:UpdateApplication UpdateApplication update

*Application

acs:ram::{#accountId}:application/{#AppName}

None None
ram:DeleteVirtualMFADevice DeleteVirtualMFADevice delete

*MFADevice

acs:ram::{#accountId}:mfa/{#SerialNumber}

None None
ram:ListRecentGovernanceMetrics ListRecentGovernanceMetrics list

*All Resource

*

None None
ram:UpdatePasskey UpdatePasskey none

*All Resource

*

None None
ram:GetVerificationInfo GetVerificationInfo get

*All Resource

*

None None
ram:AddUserToGroup AddUserToGroup create

*Group

acs:ram::{#accountId}:group/{#GroupName}

*User

acs:ram::{#accountId}:user/{#UserName}

None None
ram:GetExternalApplication GetExternalApplication get

*All Resource

*

None None
ram:GetAccessKeyInfoInRecycleBin GetAccessKeyInfoInRecycleBin get

*All Resource

*

None None
ram:ListGroups ListGroups list

*Group

acs:ram::{#accountId}:group/*

None None
ram:DeleteLoginProfile DeleteLoginProfile delete

*User

acs:ram::{#accountId}:user/{#UserName}

None None
ram:ChangePassword ChangePassword update

*All Resource

*

None None
ram:DeleteGroup DeleteGroup delete

*Group

acs:ram::{#accountId}:group/{#GroupName}

None None
ram:GetGovernanceReportStatus GetGovernanceReportStatus get

*All Resource

*

None None
ram:ListTagResources ListTagResources list

*All Resource

*

None None
ram:ListPasskeys ListPasskeys none

*All Resource

*

None None
ram:CreateVirtualMFADevice CreateVirtualMFADevice create

*MFADevice

acs:ram::{#accountId}:mfa/*

None None
ram:CreateGroup CreateGroup create

*Group

acs:ram::{#accountId}:group/*

None None
ram:ListOIDCProviders ListOIDCProviders list

*All Resource

*

None None
ram:DeleteAccessKey DeleteAccessKey delete

*User

acs:ram::{#accountId}:user/{#UserName}

None None
ram:DeleteUserInRecycleBin DeleteUserInRecycleBin delete

*All Resource

*

None None
ram:DeleteApplication DeleteApplication delete

*Application

acs:ram::{#accountId}:application/{#AppName}

None None
ram:ListUsersForGroup ListUsersForGroup list

*Group

acs:ram::{#accountId}:group/{#GroupName}

None None
ram:GetAppSecret GetAppSecret get

*Application

acs:ram::{#accountId}:application/{#AppName}

None None
ram:GenerateCredentialReport GenerateCredentialReport create

*All Resource

*

None None
ram:ListGroupsForUser ListGroupsForUser list

*User

acs:ram::{#accountId}:user/{#UserName}

None None
ram:ListUsersInRecycleBin ListUsersInRecycleBin list

*All Resource

*

None None
ram:RestoreAccessKeyFromRecycleBin RestoreAccessKeyFromRecycleBin delete

*All Resource

*

None None
ram:GetLoginProfile GetLoginProfile get

*User

acs:ram::{#accountId}:user/{#UserName}

None None
ram:UpdateUser UpdateUser update

*User

acs:ram::{#accountId}:user/{#UserName}

None None
ram:GetSecurityPreference GetSecurityPreference get

*All Resource

*

None None
ram:GetGroup GetGroup get

*Group

acs:ram::{#accountId}:group/{#GroupName}

None None
ram:ListAccessKeys ListAccessKeys list

*User

acs:ram::{#accountId}:user/{#UserName}

None None
ram:AddClientIdToOIDCProvider AddClientIdToOIDCProvider create

*OIDCProvider

acs:ram::{#accountId}:oidc-provider/{#OIDCProviderName}

ram:OidcIssuerUrl

None
ram:UnbindVerification UnbindVerification update

*All Resource

*

None None
ram:GetAccountSummary GetAccountSummary get

*All Resource

*

None None
ram:UpdateGroup UpdateGroup update

*Group

acs:ram::{#accountId}:group/{#GroupName}

None None
ram:GetAccountMFAInfo GetAccountMFAInfo get

*All Resource

*

None None
ram:SetUserSsoSettings SetUserSsoSettings update

*All Resource

*

None None
ram:CreateAppSecret CreateAppSecret create

*Application

acs:ram::{#accountId}:application/{#AppName}

None None
ram:GetDefaultDomain GetDefaultDomain get

*All Resource

*

None None
ram:GetPasswordPolicy GetPasswordPolicy get

*All Resource

*

None None
ram:DeleteSAMLProvider DeleteSAMLProvider delete

*SAMLProvider

acs:ram::{#accountId}:saml-provider/{#SAMLProviderName}

None None
ram:DeleteUser DeleteUser delete

*User

acs:ram::{#accountId}:user/{#UserName}

None None
ram:ProvisionExternalApplication ProvisionExternalApplication update

*All Resource

*

None None
ram:AddFingerprintToOIDCProvider AddFingerprintToOIDCProvider create

*OIDCProvider

acs:ram::{#accountId}:oidc-provider/{#OIDCProviderName}

ram:OidcIssuerUrl

None
ram:ListUserBasicInfos ListUserBasicInfos list

*User

acs:ram::{#accountId}:user/*

None None
ram:SetDefaultDomain SetDefaultDomain update

*All Resource

*

None None
ram:UntagResources UntagResources update

*All Resource

*

None None
ram:ListApplicationProvisionInfos ListApplicationProvisionInfos list

*All Resource

*

None None
ram:CreateOIDCProvider CreateOIDCProvider create

*All Resource

*

ram:OidcIssuerUrl

None
ram:CreateSAMLProvider CreateSAMLProvider create

*All Resource

*

None None
ram:UpdateOIDCProvider UpdateOIDCProvider update

*OIDCProvider

acs:ram::{#accountId}:oidc-provider/{#OIDCProviderName}

ram:OidcIssuerUrl

None
ram:GetApplication GetApplication get

*Application

acs:ram::{#accountId}:application/{#AppName}

None None
ram:GetAccountSecurityPracticeReport GetAccountSecurityPracticeReport get

*All Resource

*

None None

Resource

The following table lists the resources defined by Resource Access Management. Specify them in the Resource element of RAM policy statements to grant permissions for specific operations. They are uniquely identified by ARNs. Format: acs:{#ramcode}:{#regionId}:{#accountId}:{#resourceType}:

  • acs: The initialism of Alibaba Cloud service, which indicates the public cloud of Alibaba Cloud.

  • {#ramcode}: The code used in RAM to indicate an Alibaba Cloud service.

  • {#regionId}: The region ID. If the resource covers all regions, set it to an asterisk (*).

  • {#accountId}: The ID of the Alibaba Cloud account. If the resource covers all Alibaba Cloud accounts, set it to an asterisk (*).

  • {#resourceType}: The service-defined resource identifier. It supports a hierarchical structure, which is similar to a file path. If the statement covers global resources, set it to an asterisk (*).

Resource type

ARN

Group
  • acs:ram::{#accountId}:group/{#GroupName}
  • acs:ram::{#accountId}:group/*
User
  • acs:ram::{#accountId}:user/{#UserName}
  • acs:ram::{#AccountId}:user/*
SAMLProvider
  • acs:ram::{#accountId}:saml-provider/*
  • acs:ram::{#accountId}:saml-provider/{#SAMLProviderName}
OIDCProvider
  • acs:ram::{#accountId}:oidc-provider/{#OIDCProviderName}
  • acs:ram::{#accountId}:oidc-provider/*
Application
  • acs:ram::{#accountId}:application/{#AppName}
  • acs:ram::{#accountId}:application/*
MFADevice
  • acs:ram::{#accountId}:mfa/*
  • acs:ram::{#accountId}:mfa/{#SerialNumber}

Condition

The following table lists the product-level condition keys defined by Resource Access Management. You can also use Alibaba Cloud's Common condition keys. Specify these keys in the Condition element of RAM policy statements to define granular authorization rules. In the condition key, specify the condition values in the Condition_value element of the policy.

Each condition key has a specific data type, such as string, number, Boolean, or IP address. The data type determines which conditional operators can be used to compare the request values against policy values. You must specify the conditional operators compatible with the data type of the condition key. Mismatched operators will invalidate the policy. See Condition operator for valid combinations.

Condition key

Description

Data type

ram:OidcIssuerUrl The URL of the issuer, which is provided by the external IdP. String
ram:ServiceCredentialServiceName Service name specified by the service credential String
ram:MFAOperationForLogin Whether MFA authentication is required for login. String

How to create custom RAM policies?

You can create custom policies and grant them to RAM users, RAM user groups, or RAM roles. For instructions, see: