AgentLoop'da kaynak yalıtımı ve izin yönetiminin en küçük birimi AgentSpace'tir. Bu konudaki RAM ilke şablonlarını kullanarak bir RAM kullanıcısına veya RAM kullanıcı grubuna AgentLoop üzerinde tam yönetim izinleri verebilir; ya da bu kullanıcıyı veya grubu, kendisiyle ilişkili Simple Log Service, Cloud Monitor ve Microservices Engine kaynaklarıyla birlikte tek bir AgentSpace ile sınırlayabilirsiniz. Kapsamlı şablonlar, aynı Alibaba Cloud hesabına ait birden fazla AgentSpace'in birbirinden yalıtılmasını sağlar.
Bir AgentSpace üzerindeki izinlerin cloud kaynaklarıyla eşleşmesi
AgentLoop'daki her AgentSpace, diğer Alibaba Cloud hizmetlerindeki bir dizi kaynakla ilişkilendirilir:
Simple Log Service (SLS) — AgentSpace ile ilişkili SLS Projesi ve SLS İzleme Projesi.
Cloud Monitor (CMS) — AgentSpace ile ilişkili CMS Çalışma Alanı.
Microservices Engine (MSE) ve AI Registry — AgentSpace ile ilişkili MSE Ad Alanı. RAM'de ad alanı, istemler ve beceriler gibi varlıkları kapsayan
airegistrykaynak öneki altında ele alınır.airegistrykaynak yolu,saas/${MSENamespaceId}biçiminde MSE Ad Alanı Kimliğini kullanır.
Bu nedenle, belirli bir AgentSpace üzerindeki izinleri kısıtlamak, tek bir ilke içindeki agentloop, log, cms ve airegistry kaynaklarının kapsamını belirlemek anlamına gelir.
İlke şablonu seçme
Aşağıdaki tablo, her senaryoyu bir şablonla eşleştirir ve konsol ana sayfa ilkesinin de eklenip eklenmeyeceğini belirtir.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
İki kapsamlı şablon birbirinin alternatifidir; her ikisini değil, yalnızca birini ekleyin.
Aynı RAM kullanıcısına veya RAM kullanıcı grubuna AgentLoopFullAccess şablonunu veya kapsamlı şablonlardan birini ekleyin, asla her ikisini birden eklemeyin. AgentLoopFullAccess, tüm kaynaklarda agentloop:* işlemlerine izin verdiğinden sonuçta elde edilen izinler tek bir AgentSpace ile sınırlı olmaz.
Gerekli kaynak değerlerini toplama
Kapsamlı şablonlar, hedef AgentSpace'i ve onunla ilişkili kaynakları gerçek değerleriyle adresler. İlkeyi oluşturmadan önce aşağıdaki değerleri Alibaba Cloud Management Console'dan toplayın.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Kapsamlı bir ilke eklemeden önce her yer tutucuyu topladığınız değerle değiştirin. Hâlâ yer tutucu içeren bir ilke hiçbir kaynakla eşleşmez ve erişim reddedilir.
İlke şablonları
Bu konudaki tüm şablonlar RAM izin ilkeleridir. Seçtiğiniz şablondan RAM konsolunda özel bir ilke oluşturun ve ardından bu ilkeyi bir RAM kullanıcısına veya kullanıcı grubuna ekleyin.
Tam yönetim izinleri verme (AgentLoopFullAccess)
AgentLoopFullAccess şablonu, AgentLoop ve onunla ilişkili tüm kaynaklar üzerinde tam yönetim izinleri verir. Alibaba Cloud hesabındaki her AgentSpace'i yöneten bir RAM kullanıcısına veya RAM kullanıcı grubuna ekleyin.
Bu şablon, izinleri tek bir AgentSpace ile sınırlamaz. Hesaptaki tüm AgentLoop kaynaklarında agentloop:* işlemlerine ve bu hizmetlerin tüm kaynaklarında listelenen SLS, CMS ve AI Registry işlemlerine izin verir.
Aşağıdaki ifadeleri içeren özel bir ilke oluşturun:
{
"Version": "1",
"Statement": [
{
"Action": "agentloop:*",
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"log:GetLogStoreLogs", "log:GetLogStoreHistogram", "log:GetIndex", "log:GetLogStore",
"log:CreateIndex", "log:ListLogStores", "log:GetProject", "log:ListProject",
"log:CreateLogStore", "log:UpdateIndex", "log:UpdateLogStore", "log:ListScheduledSQLs",
"log:CreateScheduledSQL", "log:EnableScheduledSQL", "log:GetScheduledSQL",
"log:UpdateScheduledSQL", "log:DisableScheduledSQL", "log:ListDashboard", "log:GetDashboard",
"log:CreateDashboard", "log:UpdateDashboard", "log:DeleteDashboard", "log:ListTagResources",
"log:TagResources", "log:UntagResources", "log:ListDashboardSharing",
"log:CreateDashboardSharing", "log:AccessDashboardSharing", "log:UpdateDashboardSharing",
"log:DeleteDashboardSharing"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"airegistry:ListNamespaces", "airegistry:GetNamespace", "airegistry:GetPrompt",
"airegistry:CreatePrompt", "airegistry:ListPrompts", "airegistry:UpdatePrompt",
"airegistry:DeletePrompt", "airegistry:ListPromptVersions", "airegistry:GetPromptVersion",
"airegistry:GetPromptVersionDetail", "airegistry:CreatePromptVersion",
"airegistry:UpdatePromptVersion", "airegistry:SubmitPromptVersion",
"airegistry:DeletePromptVersion", "airegistry:GetPromptGovernance",
"airegistry:CreateSkillDraft", "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:ListSkills", "airegistry:DeleteSkill", "airegistry:UploadSkill",
"airegistry:UploadSkillViaOss", "airegistry:DownloadSkillVersionViaOss"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"cms:ListWorkspaces", "cms:GetWorkspace", "cms:GetEntityStoreData", "cms:GetEntityStore",
"cms:GetServiceObservability", "cms:DescribeIntranetRegions",
"cms:DescribeVpcForIntranetSynthetic", "cms:DescribeVswitchForIntranetSynthetic",
"cms:DescribeSecurityGroupForIntranetSynthetic", "cms:ListServices", "cms:CreateService",
"cms:GetUmodelCommonSchemaRef", "cms:GetUmodel", "cms:UpsertUmodelCommonSchemaRef",
"cms:UpsertUmodelData", "cms:ListAddons", "cms:GetAddon", "cms:GetAddonSchema",
"cms:GetAddonCodeTemplate", "cms:GetAddonMetrics", "cms:GetAddonAlertTemplates",
"cms:GetPrometheusUserSetting", "cms:GetCmsService", "cms:ListIntegrationPolicies",
"cms:CreateIntegrationPolicy", "cms:CreateAddonRelease", "cms:GetAddonRelease",
"cms:ListAddonReleases", "cms:ListIntegrationPolicyResources",
"cms:ListIntegrationPolicyCollectors", "cms:ListPrometheusInstances",
"cms:GetCloudResource", "cms:CreateCloudResource", "cms:GetCloudResourceData",
"cms:ProxyApiForMemberAccount", "cms:CreateServiceObservability"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": ["resourcecenter:GetResourceCenterServiceStatus"],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": "ram:CreateServiceLinkedRole",
"Resource": "*",
"Effect": "Allow",
"Condition": {
"StringEquals": {
"ram:ServiceName": ["agentloop.aliyuncs.com"]
}
}
},
{
"Effect": "Allow",
"Action": "ram:PassRole",
"Resource": "acs:ram::*:role/aliyunlogetlrole"
}
]
}
Açık işlem izin listesiyle izinleri tek bir AgentSpace ile sınırlama (Önerilen)
Bu şablon, her AgentLoop, SLS, CMS ve AI Registry ifadesini hedef AgentSpace ve onunla ilişkili kaynaklarla sınırlandırır ve her hizmet için yalnızca listelenen işlemlere izin verir. İzin verilen işlem kümesi üzerinde ayrıntılı denetime ihtiyacınız olduğunda bu şablonu kullanın.
AgentLoopFullAccess şablonuyla karşılaştırıldığında işlem listeleri değişmez. Yalnızca Resource alanı farklıdır: * değerinden hedef AgentSpace ve onunla ilişkili kaynakların ARN'lerine geçer. resourcecenter ve ram ifadeleri her iki şablonda da aynı izinleri verir.
Bu şablon, tüm AgentSpace'lerde agentloop:ListAgentSpaces işleminde bulunmaya izin vermez. RAM kullanıcısının AgentLoop konsol ana sayfasını açabilmesi için ayrıca AgentLoop konsol ana sayfasına erişim verme bölümündeki ilkeyi ekleyin.
Aşağıdaki ifadeleri içeren özel bir ilke oluşturun:
{
"Version": "1",
"Statement": [
{
"Action": "agentloop:*",
"Resource": [
"acs:agentloop:*:*:agentspace/${AgentSpace}",
"acs:agentloop:*:*:agentspace/${AgentSpace}/*"
],
"Effect": "Allow"
},
{
"Action": [
"log:GetLogStoreLogs", "log:GetLogStoreHistogram", "log:GetIndex", "log:GetLogStore",
"log:CreateIndex", "log:ListLogStores", "log:GetProject", "log:ListProject",
"log:CreateLogStore", "log:UpdateIndex", "log:UpdateLogStore", "log:ListScheduledSQLs",
"log:CreateScheduledSQL", "log:EnableScheduledSQL", "log:GetScheduledSQL",
"log:UpdateScheduledSQL", "log:DisableScheduledSQL", "log:ListDashboard", "log:GetDashboard",
"log:CreateDashboard", "log:UpdateDashboard", "log:DeleteDashboard", "log:ListTagResources",
"log:TagResources", "log:UntagResources", "log:ListDashboardSharing",
"log:CreateDashboardSharing", "log:AccessDashboardSharing", "log:UpdateDashboardSharing",
"log:DeleteDashboardSharing"
],
"Resource": [
"acs:log:*:*:project/${SLSProject}",
"acs:log:*:*:project/${SLSProject}/*",
"acs:log:*:*:project/${SLSTraceProject}/logstore/*"
],
"Effect": "Allow"
},
{
"Action": [
"airegistry:ListNamespaces", "airegistry:GetNamespace", "airegistry:GetPrompt",
"airegistry:CreatePrompt", "airegistry:ListPrompts", "airegistry:UpdatePrompt",
"airegistry:DeletePrompt", "airegistry:ListPromptVersions", "airegistry:GetPromptVersion",
"airegistry:GetPromptVersionDetail", "airegistry:CreatePromptVersion",
"airegistry:UpdatePromptVersion", "airegistry:SubmitPromptVersion",
"airegistry:DeletePromptVersion", "airegistry:GetPromptGovernance",
"airegistry:CreateSkillDraft", "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:ListSkills", "airegistry:DeleteSkill", "airegistry:UploadSkill",
"airegistry:UploadSkillViaOss", "airegistry:DownloadSkillVersionViaOss"
],
"Resource": [
"acs:airegistry:*:*:instance/saas/${MSENamespaceId}",
"acs:airegistry:*:*:instance/saas/${MSENamespaceId}/*"
],
"Effect": "Allow"
},
{
"Action": [
"cms:ListWorkspaces", "cms:GetWorkspace", "cms:GetEntityStoreData", "cms:GetEntityStore",
"cms:GetServiceObservability", "cms:DescribeIntranetRegions",
"cms:DescribeVpcForIntranetSynthetic", "cms:DescribeVswitchForIntranetSynthetic",
"cms:DescribeSecurityGroupForIntranetSynthetic", "cms:ListServices", "cms:CreateService",
"cms:GetUmodelCommonSchemaRef", "cms:GetUmodel", "cms:UpsertUmodelCommonSchemaRef",
"cms:UpsertUmodelData", "cms:ListAddons", "cms:GetAddon", "cms:GetAddonSchema",
"cms:GetAddonCodeTemplate", "cms:GetAddonMetrics", "cms:GetAddonAlertTemplates",
"cms:GetPrometheusUserSetting", "cms:GetCmsService", "cms:ListIntegrationPolicies",
"cms:CreateIntegrationPolicy", "cms:CreateAddonRelease", "cms:GetAddonRelease",
"cms:ListAddonReleases", "cms:ListIntegrationPolicyResources",
"cms:ListIntegrationPolicyCollectors", "cms:ListPrometheusInstances",
"cms:GetCloudResource", "cms:CreateCloudResource", "cms:GetCloudResourceData",
"cms:ProxyApiForMemberAccount", "cms:CreateServiceObservability"
],
"Resource": [
"acs:cms:*:*:workspace/${CMSWorkspace}",
"acs:cms:*:*:workspace/${CMSWorkspace}/*"
],
"Effect": "Allow"
},
{
"Action": "resourcecenter:GetResourceCenterServiceStatus",
"Resource": "*",
"Effect": "Allow"
},
{
"Action": "ram:CreateServiceLinkedRole",
"Resource": "*",
"Effect": "Allow",
"Condition": {
"StringEquals": {
"ram:ServiceName": ["agentloop.aliyuncs.com"]
}
}
},
{
"Effect": "Allow",
"Action": "ram:PassRole",
"Resource": "acs:ram::*:role/aliyunlogetlrole"
}
]
}
Joker karakterli işlemlerle izinleri tek bir AgentSpace ile sınırlama
Bu şablon, Resource alanını açık izin listesi şablonuyla aynı şekilde sınırlandırır ancak SLS, CMS ve AI Registry işlem listelerini log:*, cms:* ve airegistry:* joker karakterleriyle değiştirir. İşlemleri alt gruplara ayırmanıza gerek yoksa ve daha basit ilke bakımı tercih ediyorsanız bu şablonu kullanın.
Joker karakterler, açık izin listesinin dışladığı işlemler dahil olmak üzere aynı kaynak kapsamı içindeki bu hizmetlerin tüm işlemlerine izin verir. İzin modeliniz en az ayrıcalık ilkesini gerektiriyorsa bunun yerine açık izin listesi şablonunu kullanın.
Açık izin listesi şablonunda olduğu gibi, bu şablon da tüm AgentSpace'lerde agentloop:ListAgentSpaces işleminde bulunmaya izin vermez. RAM kullanıcısının AgentLoop konsol ana sayfasını açabilmesi için ayrıca AgentLoop konsol ana sayfasına erişim verme bölümündeki ilkeyi ekleyin.
Aşağıdaki ifadeleri içeren özel bir ilke oluşturun:
{
"Version": "1",
"Statement": [
{
"Action": "agentloop:*",
"Resource": [
"acs:agentloop:*:*:agentspace/${AgentSpace}",
"acs:agentloop:*:*:agentspace/${AgentSpace}/*"
],
"Effect": "Allow"
},
{
"Action": "log:*",
"Resource": [
"acs:log:*:*:project/${SLSProject}",
"acs:log:*:*:project/${SLSProject}/*",
"acs:log:*:*:project/${SLSTraceProject}/logstore/*"
],
"Effect": "Allow"
},
{
"Action": "airegistry:*",
"Resource": [
"acs:airegistry:*:*:instance/saas/${MSENamespaceId}",
"acs:airegistry:*:*:instance/saas/${MSENamespaceId}/*"
],
"Effect": "Allow"
},
{
"Action": "cms:*",
"Resource": [
"acs:cms:*:*:workspace/${CMSWorkspace}",
"acs:cms:*:*:workspace/${CMSWorkspace}/*"
],
"Effect": "Allow"
},
{
"Action": "resourcecenter:GetResourceCenterServiceStatus",
"Resource": "*",
"Effect": "Allow"
},
{
"Action": "ram:CreateServiceLinkedRole",
"Resource": "*",
"Effect": "Allow",
"Condition": {
"StringEquals": {
"ram:ServiceName": ["agentloop.aliyuncs.com"]
}
}
},
{
"Effect": "Allow",
"Action": "ram:PassRole",
"Resource": "acs:ram::*:role/aliyunlogetlrole"
}
]
}
AgentLoop konsol ana sayfasına erişim verme
AgentLoop konsol ana sayfası, mevcut hesaba ait tüm AgentSpace'leri listelemek için agentloop:ListAgentSpaces çağrısında bulunur. Kapsamlı şablonların hiçbiri bu işleme tüm AgentSpace'lerde izin vermez; bu nedenle kapsamlı ilkeye ek olarak aşağıdaki minimum ilkeyi ekleyin:
{
"Version": "1",
"Statement": [
{
"Action": "agentloop:ListAgentSpaces",
"Resource": [
"acs:agentloop:*:*:agentspace/*"
],
"Effect": "Allow"
}
]
}
Bir RAM kullanıcısının gerçekten gördüğü AgentSpace'ler daha sonra kaynak grubu ve kaynak düzeyinde yetkilendirme ile daraltılır.
Dikkat edilmesi gerekenler
Bu konudaki şablonları kullanarak bir AgentSpace'i yalıtmadan önce aşağıdakileri göz önünde bulundurun:
Hesap düzeyindeki ifadeler — Her şablon,
"Resource": "*"kullananresourcecenterveramifadelerini içerir. Kapsamlı şablonlar bu iki ifadeyi tek bir AgentSpace ile sınırlamaz.SLS İzleme Projesi kapsamı — Kapsamlı şablonlar SLS Projesine hem proje düzeyinde hem de alt düzeyde izin verirken SLS İzleme Projesine yalnızca Logstore düzeyinde izin verir.