CAM determines whether to allow or deny a cloud platform user's access to cloud resources based on the following evaluation logic.
- By default, all requests are denied.
- CAM checks all policies associated with the current user.
- It checks whether there is a match with any policy. If yes, it proceeds to the next evaluation step; otherwise, it makes a final decision to deny access to cloud resources.
- It checks whether there is a matching deny policy. If yes, it makes a final decision to deny access to cloud resources; otherwise, it proceeds to the next evaluation step.
- It checks whether there is a matching allow policy. If yes, it makes a final decision to allow access to cloud resources; otherwise, it makes a final decision to deny access to cloud resources.
- Root accounts are granted access to all resources under their name by default.
- Certain general policies are associated with all CAM users by default. For details, see the general policy table below.
- All other policies should be explicitly specified, including allow and deny policies.
- The workload supporting cross-account resource access involves permission transmission scenarios where root account A grants permissions to root account B's sub-account to access root account A's resources. In this case, CAM verifies whether A grants B the permission and whether B grants its sub-account the permission. Under the premise that both conditions are met, the sub-account of B can access A's resources.
The table of the currently supported general policies is as follows:
| Policy | Definition |
|---|---|
| Multi-factor authentication (MFA) is required for the key query. | { "principal":"", "action":"account:QueryKeyBySecretId", "resource":"", "condition":{"string_equal":{"mfa":"0"}} } |
| MFA is required for setting sensitive operations. | { "principal":"", "action":"account:SetSafeAuthFlag", "resource":"", "condition":{"string_equal":{"mfa":"0"}} } |
| MFA is required for token binding. | { "principal":"", "action":"account:BindToken", "resource":"", "condition":{"string_equal":{"mfa":"0"}} } |
| MFA is required for token unbinding. | { "principal":"", "action":"account:UnbindToken", "resource":"", "condition":{"string_equal":{"mfa":"0"}} } |
| MFA is required for email address changing. | { "principal":"", "action":"account:ModifyMail", "resource":"", "condition":{"string_equal":{"mfa":"0"}} } |
| MFA is required for mobile phone number changing. | { "principal":"", "action":"account:ModifyPhoneNum", "resource":"", "condition":{"string_equal":{"mfa":"0"}} } |