Creating a Custom Policy for Cloud Services
Function
This API is provided for the administrator to create a custom policy for cloud services.
The API can be called using both the global endpoint and region-specific endpoints.
URI
POST /v3.0/OS-ROLE/roles
Request Parameters
|
Parameter |
Mandatory |
Type |
Description |
|---|---|---|---|
|
Content-Type |
Yes |
String |
Fill application/json;charset=utf8 in this field. |
|
X-Auth-Token |
Yes |
String |
Access token issued to a user to bear its identity and permissions. For details about the permissions required by the token, see Actions. |
|
Parameter |
Mandatory |
Type |
Description |
|---|---|---|---|
|
Yes |
Object |
Custom policy information. |
|
Parameter |
Mandatory |
Type |
Description |
|---|---|---|---|
|
display_name |
Yes |
String |
Display name of the custom policy. |
|
type |
Yes |
String |
Application scope of the custom policy.
Set the display mode of a custom policy to either AX or XA.
NOTE:
|
|
description |
Yes |
String |
Description of the custom policy. |
|
description_cn |
No |
String |
Description of the custom policy in Chinese. |
|
Yes |
Object |
Content of the custom policy. |
|
Parameter |
Mandatory |
Type |
Description |
|---|---|---|---|
|
Version |
Yes |
String |
Policy version. When creating a custom policy, set this parameter to 1.1.
NOTE:
|
|
Yes |
Array of objects |
Statement of the policy. A policy can contain a maximum of eight statements. |
|
Parameter |
Mandatory |
Type |
Description |
|---|---|---|---|
|
Action |
Yes |
Array of strings |
Specific operation permissions on a resource. For details about supported actions, see "Permissions and Supported Actions" in the API Reference of cloud services.
NOTE:
|
|
Effect |
Yes |
String |
Effect of the permission. The value can be Allow or Deny. If both Allow and Deny statements are found in a policy, the authentication starts from the Deny statements. Options:
|
|
Condition |
No |
Map<String,Map<String,Array<String>>> |
Conditions for the permission to take effect. For details, see Creating a Custom Policy.
NOTE:
Take the condition in the sample request as an example, the values of the condition key (obs:prefix) and string (public) must be equal (StringEquals). "Condition": {
"StringEquals": {
"obs:prefix": [
"public"
]
}
}
|
|
Resource |
No |
Array of strings |
Cloud resource.
NOTE:
|
Response Parameters
|
Parameter |
Type |
Description |
|---|---|---|
|
Object |
Custom policy information. |
|
Parameter |
Type |
Description |
|---|---|---|
|
catalog |
String |
Service catalog. |
|
display_name |
String |
Display name of the custom policy. |
|
description |
String |
Description of the custom policy. |
|
Object |
Resource link of the custom policy. |
|
|
Object |
Content of the custom policy. |
|
|
description_cn |
String |
Description of the custom policy in Chinese. |
|
domain_id |
String |
Account ID. |
|
type |
String |
Display mode.
NOTE:
|
|
id |
String |
Custom policy ID. |
|
name |
String |
Name of the custom policy. |
|
updated_time |
String |
Time when the custom policy was last updated.
NOTE:
The value is a UTC time in the YYYY-MM-DDTHH:mm:ss.ssssssZ format, for example, 2023-06-28T08:56:33.710000Z. For details about the date and timestamp formats, see ISO-8601. |
|
created_time |
String |
Time when the custom policy was created.
NOTE:
The value is a UTC time in the YYYY-MM-DDTHH:mm:ss.ssssssZ format, for example, 2023-06-28T08:56:33.710000Z. For details about the date and timestamp formats, see ISO-8601. |
|
references |
String |
Number of references. |
|
Parameter |
Type |
Description |
|---|---|---|
|
Version |
String |
Policy version.
NOTE:
|
|
Array of objects |
Statement of the policy. A policy can contain a maximum of eight statements. |
|
Parameter |
Mandatory |
Type |
Description |
|---|---|---|---|
|
Action |
Yes |
Array of strings |
Specific operation permissions on a resource. For details about supported actions, see "Permissions and Supported Actions" in the API Reference of cloud services.
NOTE:
|
|
Effect |
Yes |
String |
Effect of the permission. The value can be Allow or Deny. If both Allow and Deny statements are found in a policy, the authentication starts from the Deny statements. Options:
|
|
Condition |
No |
Map<String,Map<String,Array<String>>> |
Conditions for the permission to take effect. For details, see Creating a Custom Policy.
NOTE:
Take the condition in the sample request as an example, the values of the condition key (obs:prefix) and string (public) must be equal (StringEquals). "Condition": {
"StringEquals": {
"obs:prefix": [
"public"
]
}
}
|
|
Resource |
No |
Array of strings |
Cloud resource.
NOTE:
|
Example Request
Request to create a custom policy named IAMCloudServicePolicy that allows only projects whose names start with eu-west-101 to obtain ACL information about all buckets.
POST https://iam.myhuaweicloud.eu/v3.0/OS-ROLE/roles
{
"role": {
"display_name": "IAMCloudServicePolicy",
"type": "AX",
"description": "IAMDescription",
"description_cn": "Description in Chinese",
"policy": {
"Version": "1.1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"obs:bucket:GetBucketAcl"
],
"Condition": {
"StringStartWith": {
"g:ProjectName": [
"eu-west-101"
]
}
},
"Resource": [
"obs:*:*:bucket:*"
]
}
]
}
}
}
Example Response
Status code: 201
The custom policy is created successfully.
{
"role": {
"catalog": "CUSTOMED",
"display_name": "IAMCloudServicePolicy",
"description": "IAMDescription",
"links": {
"self": "https://iam.myhuaweicloud.eu/v3/roles/93879fd90f1046f69e6e0b31c94d2615"
},
"policy": {
"Version": "1.1",
"Statement": [
{
"Action": [
"obs:bucket:GetBucketAcl"
],
"Resource": [
"obs:*:*:bucket:*"
],
"Effect": "Allow",
"Condition": {
"StringStartWith": {
"g:ProjectName": [
"eu-west-101"
]
}
}
}
]
},
"description_cn": "Description in Chinese",
"domain_id": "d78cbac186b744899480f25bd...",
"type": "AX",
"id": "93879fd90f1046f69e6e0b31c9...",
"name": "custom_d78cbac186b744899480f25bd022f468_1"
}
}
Status Codes
|
Status Code |
Description |
|---|---|
|
201 |
The custom policy is created successfully. |
|
400 |
Invalid parameters. |
|
401 |
Authentication failed. |
|
403 |
Access denied. |
|
500 |
Internal server error. |
Error Codes
None
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.