Overview
RAM permission policies define which AI Registry actions and resources are available to RAM users or STS temporary credentials, preventing unauthorized changes and data exposure.
Use predefined policies for common use cases, or create custom policies for fine-grained access control.
Prerequisites
An Alibaba Cloud account with AI Registry activated
At least one AI Registry workspace (namespace)
Familiarity with RAM access control, user creation, and policy configuration
Method 1: Use predefined policies
Attach these predefined policies directly to a RAM user or user group in the RAM console.
Policy name | Description |
AliyunAIRegistryReadOnlyAccess | Grants read-only access to the console and client side. Allows viewing workspaces and prompts but not creating, modifying, or deleting resources. |
AliyunAIRegistryFullAccess | Grants full access to all AI Registry resources. |
AliyunAIRegistryPromptFullAccess | Grants full access to prompt resources, including creating, editing, publishing, deleting, and debugging. |
AliyunAIRegistryNamespaceFullAccess | Grants full access to workspaces (namespaces), including creating, editing, and deleting. |
AliyunAIRegistrySkillFullAccess | Grants full access to skill resources, including creating, editing, publishing, enabling, disabling, and deleting. |
Procedure
Log on to the RAM console.
Click Attach Policy. In the policy search box, enter
AIRegistry.Select the required predefined policy and click OK.
To verify, log on to the AI Registry console with the RAM user credentials and confirm that expected operations are accessible and restricted operations are blocked.
Select AliyunAIRegistryReadOnlyAccess for view-only access, or AliyunAIRegistryFullAccess for full management.
Method 2: Create a custom permission policy
If predefined policies do not meet your requirements, create a custom policy for workspace-level or resource-level access control.
2.1 Key concepts
A custom policy consists of the following elements:
Effect: Allow or Deny.
Action: The operations to authorize.
Resource: The target resources.
Action
Actions in AI Registry are divided into two levels:
General action—for client access:
Action | Description |
airegistry:Read | Client-side read-only access for pulling resources such as prompts and skills via SDKs or APIs. Does not grant console permissions. |
airegistry:Write | Client-side write access for resources via SDKs or APIs. Does not grant console permissions. Currently, only skills support client-side writes. |
API-level actions—for console operations (fine-grained authorization by specific API):
Category | Action | Description |
Workspace | airegistry:CreateNamespace | Creates a workspace. |
airegistry:ListNamespaces | Lists workspaces. | |
airegistry:GetNamespace | Gets workspace details. | |
airegistry:UpdateNamespace | Updates a workspace. | |
airegistry:DeleteNamespace | Deletes a workspace. | |
airegistry:CreateNamespaceWithSource | Creates a workspace with a specified source. | |
airegistry:ListNamespaceBySource | Lists workspaces filtered by source. | |
Prompt | airegistry:ListPrompts | Lists prompts. |
airegistry:GetPrompt | Gets prompt details. | |
airegistry:CreatePrompt | Creates a prompt. | |
airegistry:UpdatePrompt | Updates a prompt. | |
airegistry:DeletePrompt | Deletes a prompt. | |
airegistry:ListPromptVersions | Lists prompt versions. | |
airegistry:GetPromptVersion | Gets prompt version information. | |
airegistry:GetPromptVersionDetail | Gets prompt version details. | |
airegistry:CreatePromptVersion | Creates a prompt version. | |
airegistry:UpdatePromptVersion | Updates a prompt version. | |
airegistry:SubmitPromptVersion | Publishes a prompt version. | |
airegistry:DeletePromptVersion | Deletes a prompt version. | |
airegistry:GetPromptGovernance | Gets prompt governance information. | |
Debugging and optimization | airegistry:InvokePromptDebugStream | Debugs a prompt (streaming). |
airegistry:InvokePromptOptimizeStream | Optimizes a prompt (streaming). | |
airegistry:GetSupportedModels | Gets the list of supported models. | |
Skill | airegistry:CreateSkillDraft | Creates a skill draft. |
airegistry:UpdateSkillDraft | Updates a skill draft. | |
airegistry:DeleteSkillDraft | Deletes a skill draft. | |
airegistry:SubmitSkillVersion | Submits a skill version. | |
airegistry:PublishSkillVersion | Publishes a skill version. | |
airegistry:ForcePublishSkillVersion | Force-publishes a skill version. | |
airegistry:UpdateSkillLabels | Updates the labels of a skill. | |
airegistry:OnlineSkill | Enables a skill. | |
airegistry:OfflineSkill | Disables a skill. | |
airegistry:UpdateSkillScope | Updates the scope of a skill. | |
airegistry:GetSkillDetail | Gets skill details. | |
airegistry:GetSkillVersionDetail | Gets skill version details. | |
airegistry:DownloadSkillVersion | Downloads a skill version. | |
airegistry:ListSkills | Lists skills. | |
airegistry:DeleteSkill | Deletes a skill. | |
airegistry:UploadSkill | Uploads a skill. | |
airegistry:UploadSkillViaOss | Uploads a skill via OSS. | |
airegistry:DownloadSkillVersionViaOss | Downloads a skill version via OSS. |
airegistry:Readandairegistry:Writegrant client-side access only. Neither grants console permissions. To allow both client and console access, combineairegistry:Readandairegistry:Writewith API-level actions.Alternatively, use
airegistry:*as the Action to grant both client-side read/write access and all API-level operation permissions.
Resource
Resources are identified by Alibaba Cloud Resource Name (ARN):
acs:airegistry:*:*:instance/saas/{workspace-id}/{domain}/{resource-type}/{resource-name}Where:
workspace-id: Your workspace ID from the AI Registry console.
domain: Currently fixed to DEFAULT.
resource-type: The resource type, such as
prompt,skill,mcp, oragent.resource-name: The name of the specific resource.
Use the wildcard (*) to match multiple resources.
2.2 Authorization granularity
Control access at different levels of granularity:
Scope of authorization | Example |
All resources in all workspaces | acs:airegistry:*:*:instance/saas/* |
All resources in a specific workspace | acs:airegistry:*:*:instance/saas/{your-workspace-id}/* |
A specific type of resource in a specific workspace | acs:airegistry:*:*:instance/saas/{your-workspace-id}/DEFAULT/prompt/* |
A specific type of resource in a specific workspace (skill) | acs:airegistry:*:*:instance/saas/{your-workspace-id}/DEFAULT/skill/* |
A specific resource | acs:airegistry:*:*:instance/saas/{your-workspace-id}/DEFAULT/prompt/my-prompt |
2.3 Create a custom policy
Log on to the RAM console.
Click Create Policyand select the JSON Editor tab.
Write the policy content by referring to the examples below and click OK.
Attach the created policy to the target RAM user or user group.
To verify, log on to the AI Registry console with the RAM user credentials and confirm that expected operations are accessible and restricted operations are blocked.
2.4 Common scenarios
Scenario 1: Grant read-only client access
An application pulls resources such as prompts via an SDK or API and requires only read access.
{
"Statement": [
{
"Effect": "Allow",
"Action": "airegistry:Read",
"Resource": "acs:airegistry:*:*:instance/saas/{your-workspace-id}/*"
}
],
"Version": "1"
}Scenario 2: Grant full management of a workspace
A team member needs full management permissions (console and client) for a specific workspace.
{
"Statement": [
{
"Effect": "Allow",
"Action": "airegistry:*",
"Resource": "acs:airegistry:*:*:instance/saas/{your-workspace-id}/*"
}
],
"Version": "1"
}Scenario 3: Restrict access to prompts
A prompt engineer needs to manage prompts but should not access other resource types.
{
"Statement": [
{
"Effect": "Allow",
"Action": [
"airegistry:Read",
"airegistry:GetPrompt",
"airegistry:CreatePrompt",
"airegistry:UpdatePrompt",
"airegistry:DeletePrompt",
"airegistry:ListPromptVersions",
"airegistry:GetPromptVersion",
"airegistry:GetPromptVersionDetail",
"airegistry:CreatePromptVersion",
"airegistry:UpdatePromptVersion",
"airegistry:SubmitPromptVersion",
"airegistry:DeletePromptVersion",
"airegistry:GetPromptGovernance",
"airegistry:InvokePromptDebugStream",
"airegistry:InvokePromptOptimizeStream"
],
"Resource": "acs:airegistry:*:*:instance/saas/{your-workspace-id}/DEFAULT/prompt/*"
},
{
"Effect": "Allow",
"Action": [
"airegistry:ListNamespaces",
"airegistry:ListNamespaceBySource",
"airegistry:GetNamespace",
"airegistry:GetSupportedModels"
],
"Resource": "acs:airegistry:*:*:instance/saas/*"
},
{
"Effect": "Allow",
"Action": "airegistry:ListPrompts",
"Resource": "acs:airegistry:*:*:instance/saas/{your-workspace-id}/DEFAULT/prompt"
}
],
"Version": "1"
}ListPrompts is a collection-level operation, so its Resource is .../prompt (without /*).
Alternatively, use the predefined policy AliyunAIRegistryPromptFullAccess to achieve the same result.
Scenario 4: Combine client and console permissions
An application pulls resources via a client, and the user also manages prompts in the console.
{
"Statement": [
{
"Effect": "Allow",
"Action": "airegistry:Read",
"Resource": "acs:airegistry:*:*:instance/saas/{your-workspace-id}/*"
},
{
"Effect": "Allow",
"Action": [
"airegistry:CreatePrompt",
"airegistry:UpdatePrompt",
"airegistry:DeletePrompt",
"airegistry:CreatePromptVersion",
"airegistry:UpdatePromptVersion",
"airegistry:SubmitPromptVersion",
"airegistry:DeletePromptVersion",
"airegistry:InvokePromptDebugStream",
"airegistry:InvokePromptOptimizeStream"
],
"Resource": "acs:airegistry:*:*:instance/saas/{your-workspace-id}/DEFAULT/prompt/*"
}
],
"Version": "1"
}Scenario 5: Restrict access to skills
A team member needs to manage skills but should not access other resource types.
{
"Statement": [
{
"Effect": "Allow",
"Action": [
"airegistry:Read",
"airegistry:Write",
"airegistry:UpdateSkillDraft",
"airegistry:DeleteSkillDraft",
"airegistry:SubmitSkillVersion",
"airegistry:PublishSkillVersion",
"airegistry:ForcePublishSkillVersion",
"airegistry:UpdateSkillBizTags",
"airegistry:UpdateSkillLabels",
"airegistry:OnlineSkill",
"airegistry:OfflineSkill",
"airegistry:UpdateSkillScope",
"airegistry:GetSkillDetail",
"airegistry:GetSkillVersionDetail",
"airegistry:DownloadSkillVersion",
"airegistry:DeleteSkill",
"airegistry:DownloadSkillVersionViaOss"
],
"Resource": "acs:airegistry:*:*:instance/saas/{your-workspace-id}/DEFAULT/skill/*"
},
{
"Effect": "Allow",
"Action": [
"airegistry:ListNamespaces",
"airegistry:ListNamespaceBySource",
"airegistry:GetNamespace"
],
"Resource": "acs:airegistry:*:*:instance/saas/*"
},
{
"Effect": "Allow",
"Action": [
"airegistry:ListSkills",
"airegistry:CreateSkillDraft",
"airegistry:UploadSkill",
"airegistry:UploadSkillViaOss"
],
"Resource": "acs:airegistry:*:*:instance/saas/{your-workspace-id}/DEFAULT/skill"
}
],
"Version": "1"
}ListSkills, CreateSkillDraft, UploadSkill, and UploadSkillViaOss are collection-level operations, so their Resource is .../skill (without /*).
Alternatively, use the predefined policy AliyunAIRegistrySkillFullAccess to achieve the same result.
Scenario 6: Scope permissions to a specific resource
Use case: Allow a RAM user to access only one specific prompt.
{
"Statement": [
{
"Effect": "Allow",
"Action": "airegistry:*",
"Resource": "acs:airegistry:*:*:instance/saas/{your-workspace-id}/DEFAULT/prompt/my-prompt"
}
],
"Version": "1"
}2.5 Usage notes
Deny overrides Allow: When both Allow and Deny apply to the same action, Deny takes precedence. Use this to grant broad permissions while restricting specific actions.
Workspace isolation: AI Registry enforces workspace ownership. You cannot access workspaces owned by other Alibaba Cloud accounts, even if specified in a RAM policy.
Workspace ID in policies: Replace
{your-workspace-id}with your actual workspace ID from the AI Registry console.Principle of least privilege: Grant each user only the minimum permissions required for their tasks. Avoid overly broad wildcards.
FAQ
Q: What should I do if a RAM user receives a "permission denied" error?
A: Check the following:
Verify that the correct permission policy is attached to the RAM user.
Verify that the workspace ID in the permission policy matches the workspace being accessed.
Verify that the Action covers the required operation type (
airegistry:Read,airegistry:Write, or specific API-level actions).If you are using a Deny policy, check that it is not unintentionally blocking required operations.
Q: How do I allow a RAM user to access only specific workspaces?
A: In the Resource element, specify exact workspace IDs instead of the wildcard (*). For multiple workspaces, add multiple Statement elements.
Q: How do I configure permissions for access using STS temporary credentials?
A: STS temporary credentials inherit permissions from two sources: the policy attached to the RAM role, and the policy specified in the AssumeRole API call. Ensure the RAM role has the required AI Registry permissions and the AssumeRole policy does not restrict them.