Function Compute menggunakan Resource Access Management (RAM) untuk mengelola izin. Dengan RAM, Anda tidak perlu berbagi pasangan AccessKey dengan pengguna lain. Sebagai gantinya, Anda dapat memberikan pengguna hanya izin minimal yang diperlukan. Pasangan AccessKey mencakup ID AccessKey dan Rahasia AccessKey. Topik ini menjelaskan kebijakan untuk Function Compute, termasuk kebijakan sistem dan kebijakan kustom, serta menyediakan contoh kebijakan kustom.
Jenis-jenis Kebijakan
Dalam RAM, kebijakan adalah serangkaian izin yang didefinisikan berdasarkan Struktur dan sintaksis Kebijakan. Kebijakan secara akurat mendefinisikan set sumber daya yang diotorisasi, set tindakan, dan kondisi otorisasi. Kebijakan untuk Function Compute mencakup jenis-jenis berikut:
Kebijakan Sistem: Kebijakan sistem dibuat dan diperbarui oleh Alibaba Cloud. Anda dapat menggunakan kebijakan sistem tetapi tidak dapat memodifikasinya.
Kebijakan Kustom: Anda dapat membuat, memperbarui, dan menghapus kebijakan kustom. Anda perlu memelihara versi dari kebijakan kustom.
Kebijakan Sistem
Saat masuk ke Konsol Function Compute sebagai pengguna RAM untuk pertama kalinya, Anda harus menggunakan akun Alibaba Cloud untuk melampirkan kebijakan sistem Function Compute dan layanan Alibaba Cloud lainnya kepada pengguna RAM. Anda hanya dapat mengakses layanan Alibaba Cloud, termasuk Function Compute, sebagai pengguna RAM setelah kebijakan sistem dilampirkan.
Berikut adalah daftar kebijakan sistem berdasarkan jenis:
Kebijakan sistem untuk Function Compute
Nama Kebijakan
Deskripsi
AliyunFCReadOnlyAccess
Izin baca-saja pada semua sumber daya Function Compute.
AliyunFCInvocationAccess
Izin untuk memanggil fungsi.
AliyunFCFullAccess
Izin untuk mengelola semua sumber daya Function Compute.
CatatanKebijakan AliyunFCFullAccess mencakup izin dari kebijakan AliyunFCInvocationAccess dan AliyunFCReadOnlyAccess. Setelah melampirkan kebijakan AliyunFCFullAccess ke pengguna RAM, Anda tidak perlu melampirkan kebijakan AliyunFCInvocationAccess atau AliyunFCReadOnlyAccess ke pengguna RAM.
Kebijakan sistem untuk layanan Alibaba Cloud lainnya
Layanan Alibaba Cloud
Kebijakan Sistem
Layanan Log Sederhana
AliyunLogReadOnlyAccess: izin baca-saja pada sumber daya Layanan Log Sederhana.
AliyunLogFullAccess: izin untuk mengelola sumber daya Layanan Log Sederhana.
CatatanUntuk mengakses Layanan Log Sederhana sebagai pengguna RAM, Anda hanya perlu melampirkan kebijakan AliyunLogReadOnlyAccess ke pengguna RAM berdasarkan prinsip hak istimewa minimal.
Object Storage Service (OSS)
AliyunOSSReadOnlyAccess: izin baca-saja pada sumber daya OSS.
AliyunOSSFullAccess: izin untuk mengelola sumber daya OSS.
CloudMonitor
AliyunCloudMonitorReadOnlyAccess: izin baca-saja pada sumber daya CloudMonitor.
Certificate Management Service
AliyunYundunCertReadOnlyAccess: izin baca-saja pada sumber daya Certificate Management Service.
Virtual Private Cloud (VPC)
AliyunVPCReadOnlyAccess: izin baca-saja pada sumber daya VPC.
Elastic Compute Service (ECS)
AliyunECSReadOnlyAccess: izin baca-saja pada sumber daya ECS.
RAM
AliyunRAMReadOnlyAccess: izin baca-saja pada sumber daya RAM, termasuk izin untuk melihat pengguna, grup, dan informasi otorisasi.
AliyunRAMFullAccess: izin untuk mengelola sumber daya RAM, termasuk izin untuk mengelola pengguna dan memberikan izin.
CatatanJika Anda hanya melampirkan kebijakan AliyunRAMReadOnlyAccess ke pengguna RAM, Anda hanya dapat memperoleh daftar peran di konsol sebagai pengguna RAM. Jika Anda perlu melakukan operasi lain sebagai pengguna RAM, Anda perlu melampirkan kebijakan AliyunRAMFullAccess ke pengguna RAM.
Application Real-Time Monitoring Service (ARMS)
AliyunARMSReadOnlyAccess: izin baca-saja pada sumber daya ARMS.
AliyunARMSFullAccess: izin untuk mengelola sumber daya ARMS.
CatatanUntuk mengakses ARMS sebagai pengguna RAM, Anda hanya perlu melampirkan kebijakan AliyunARMSReadOnlyAccess ke pengguna RAM berdasarkan prinsip hak istimewa minimal.
Simple Message Queue (formerly MNS)
AliyunMNSReadOnlyAccess: izin baca-saja pada sumber daya Simple Message Queue (formerly MNS).
AliyunMNSFullAccess: izin untuk mengelola sumber daya Simple Message Queue (formerly MNS).
CatatanUntuk mengakses Simple Message Queue (formerly MNS) sebagai pengguna RAM, Anda hanya perlu melampirkan kebijakan AliyunMNSReadOnlyAccess ke pengguna RAM berdasarkan prinsip hak istimewa minimal.Simple Message Queue (formerly MNS)
EventBridge
AliyunEventBridgeReadOnlyAccess: izin baca-saja pada sumber daya EventBridge.
AliyunEventBridgeFullAccess: izin untuk mengelola sumber daya EventBridge.
CatatanUntuk mengakses EventBridge sebagai pengguna RAM, Anda hanya perlu melampirkan kebijakan AliyunEventBridgeReadOnlyAccess ke pengguna RAM berdasarkan prinsip hak istimewa minimal.
ApsaraMQ for RocketMQ
AliyunMQReadOnlyAccess: izin baca-saja pada sumber daya ApsaraMQ for RocketMQ.
AliyunMQFullAccess: izin untuk mengelola sumber daya ApsaraMQ for RocketMQ.
CatatanUntuk mengakses ApsaraMQ for RocketMQ sebagai pengguna RAM, Anda hanya perlu melampirkan kebijakan AliyunMQReadOnlyAccess ke pengguna RAM berdasarkan prinsip hak istimewa minimal.
Container Registry
AliyunContainerRegistryReadOnlyAccess: izin baca-saja pada sumber daya Container Registry.
AliyunContainerRegistryFullAccess: izin untuk mengelola sumber daya Container Registry.
CatatanUntuk mengakses Container Registry sebagai pengguna RAM, Anda hanya perlu melampirkan kebijakan AliyunContainerRegistryReadOnlyAccess ke pengguna RAM berdasarkan prinsip hak istimewa minimal.
File Storage NAS (NAS)
AliyunNASReadOnlyAccess: izin baca-saja pada sumber daya NAS.
AliyunNASFullAccess: izin untuk mengelola sumber daya NAS.
CatatanUntuk mengakses NAS sebagai pengguna RAM, Anda hanya perlu melampirkan kebijakan AliyunNASReadOnlyAccess ke pengguna RAM berdasarkan prinsip hak istimewa minimal.
ApsaraDB RDS
AliyunRDSReadOnlyAccess: izin baca-saja pada sumber daya ApsaraDB RDS.
AliyunRDSFullAccess: izin untuk mengelola sumber daya ApsaraDB RDS.
CatatanUntuk mengakses ApsaraDB RDS sebagai pengguna RAM, Anda hanya perlu melampirkan kebijakan AliyunRDSReadOnlyAccess ke pengguna RAM berdasarkan prinsip hak istimewa minimal.
Alibaba Cloud DevOps
AliyunRDCReadOnlyAccess: izin baca-saja pada sumber daya Apsara Devops RDC.
AliyunRDCFullAccess: izin untuk mengelola sumber daya Apsara Devops RDC.
CatatanUntuk mengakses ApsaraDB RDS sebagai pengguna RAM, Anda hanya perlu melampirkan kebijakan AliyunRDCReadOnlyAccesss ke pengguna RAM berdasarkan prinsip hak istimewa minimal.
Jika Anda tidak dapat memperbarui pemicu sebagai pengguna RAM setelah melampirkan kebijakan terkait pemicu, misalnya, AliyunOSSFullAccess, ke pengguna RAM menggunakan akun Alibaba Cloud, Anda perlu melampirkan kebijakan kustom berikut ke pengguna RAM menggunakan akun Alibaba Cloud. Setelah kebijakan kustom dilampirkan, Anda dapat memperbarui pemicu acara OSS sebagai pengguna RAM.
{
"Statement": [
{
"Action": [
"ram:PassRole"
],
"Effect": "Allow",
"Resource": "*"
}
],
"Version": "1"
}Kebijakan Kustom
Selain kebijakan sistem, Function Compute mendukung kebijakan kustom yang memungkinkan Anda memberikan izin granular halus kepada pengguna RAM. Untuk informasi lebih lanjut tentang kebijakan, lihat Elemen dasar kebijakan.
Tindakan | Sumber Daya | Deskripsi |
fc:GetAsyncTask | acs:fc:{region}:{uid}:functions/{functionName}/async-tasks/{taskId} | Tugas asinkron |
fc:StopAsyncTask | acs:fc:{region}:{uid}:functions/{functionName}/async-tasks/{taskId} | |
fc:ListAsyncTasks | acs:fc:{region}:{uid}:functions/{functionName}/async-tasks/* | |
fc:ListFunctionAsyncInvokeConfigs | acs:fc:{region}:{uid}:async-invoke-configs/* acs:fc:{region}:{uid}:functions/{functionName} | Konfigurasi pemanggilan asinkron |
fc:ListConcurrencyConfigs | acs:fc:{region}:{uid}:concurrency-configs/* acs:fc:{region}:{uid}:functions/{functionName} | Konfigurasi konkurensi |
fc:ListCustomDomains | acs:fc:{region}:{uid}:custom-domains/* | Semua nama domain kustom |
fc:GetCustomDomain | acs:fc:{region}:{uid}:custom-domains/{domainName} | Nama domain kustom tertentu |
fc:DeleteCustomDomain | ||
fc:UpdateCustomDomain | ||
fc:CreateCustomDomain | ||
fc:ListFunctions | acs:fc:{region}:{uid}:functions/* | Semua sumber daya fungsi |
fc:DeleteConcurrencyConfig | acs:fc:{region}:{uid}:functions/{functionName} | |
fc:PutConcurrencyConfig | acs:fc:{region}:{uid}:functions/{functionName} | |
fc:DeleteFunction | acs:fc:{region}:{uid}:functions/{functionName} | |
fc:UpdateFunction | acs:fc:{region}:{uid}:functions/{functionName} | |
fc:CreateFunction | acs:fc:{region}:{uid}:functions/{functionName} | |
fc:GetConcurrencyConfig | acs:fc:{region}:{uid}:functions/{functionName} | |
fc:GetFunction | acs:fc:{region}:{uid}:functions/{functionName} | |
fc:ListAliases | acs:fc:{region}:{uid}:functions/{functionName}/aliases/* | Semua alias |
fc:CreateAlias | acs:fc:{region}:{uid}:functions/{functionName}/aliases/{aliasName} | Alias tertentu |
fc:UpdateAlias | acs:fc:{region}:{uid}:functions/{functionName}/aliases/{aliasName} | |
fc:GetAlias | acs:fc:{region}:{uid}:functions/{functionName}/aliases/{aliasName} | |
fc:DeleteAlias | acs:fc:{region}:{uid}:functions/{functionName}/aliases/{aliasName} | |
fc:ListInstances | acs:fc:{region}:{uid}:functions/{functionName}/instances/* | Informasi instans |
fc:ListTriggers | acs:fc:{region}:{uid}:functions/{functionName}/triggers/* | Semua sumber daya pemicu di bawah fungsi yang ditentukan |
fc:CreateTrigger | acs:fc:{region}:{uid}:functions/{functionName}/triggers/{triggerName} | Sumber daya pemicu tertentu di bawah fungsi yang ditentukan |
fc:UpdateTrigger | acs:fc:{region}:{uid}:functions/{functionName}/triggers/{triggerName} | |
fc:GetTrigger | acs:fc:{region}:{uid}:functions/{functionName}/triggers/{triggerName} | |
fc:DeleteTrigger | acs:fc:{region}:{uid}:functions/{functionName}/triggers/{triggerName} | |
fc:PublishFunctionVersion | acs:fc:{region}:{uid}:functions/{functionName}/versions | Semua versi |
fc:ListFunctionVersions | acs:fc:{region}:{uid}:functions/{functionName}/versions/* | |
fc:DeleteFunctionVersion | acs:fc:{region}:{uid}:functions/{functionName}/versions/{versionId} | Versi tertentu |
fc:ListVpcBindings | acs:fc:{region}:{uid}:functions/{functionName}/vpc-bindings/* | Konfigurasi VPC |
fc:CreateVpcBinding | acs:fc:{region}:{uid}:functions/{functionName}/vpc-bindings/* | |
fc:DeleteVpcBinding | acs:fc:{region}:{uid}:functions/{functionName}/vpc-bindings/{vpcId} | |
fc:GetFunctionCode | acs:fc:{region}:{uid}:functions/{functionName} acs:fc:{region}:{uid}:functions/{functionName}/{qualifier} | Semua kode fungsi |
fc:GetFunctionAsyncInvokeConfig | acs:fc:{region}:{uid}:functions/{functionName} acs:fc:{region}:{uid}:functions/{functionName}/{qualifier} | Semua sumber daya fungsi |
fc:DeleteProvisionConfig | acs:fc:{region}:{uid}:functions/{functionName} acs:fc:{region}:{uid}:functions/{functionName}/{qualifier} | |
fc:PutProvisionConfig | acs:fc:{region}:{uid}:functions/{functionName} acs:fc:{region}:{uid}:functions/{functionName}/{qualifier} | |
fc:InvokeFunction | acs:fc:{region}:{uid}:functions/{functionName} acs:fc:{region}:{uid}:functions/{functionName}/{qualifier} | |
fc:PutFunctionAsyncInvokeConfig | acs:fc:{region}:{uid}:functions/{functionName} acs:fc:{region}:{uid}:functions/{functionName}/{qualifier} | |
fc:GetProvisionConfig | acs:fc:{region}:{uid}:functions/{functionName} acs:fc:{region}:{uid}:functions/{functionName}/{qualifier} | |
fc:DeleteFunctionAsyncInvokeConfig | acs:fc:{region}:{uid}:functions/{functionName} acs:fc:{region}:{uid}:functions/{functionName}/{qualifier} | |
fc:GetLayerVersionByArn | acs:fc:{region}:{uid}:layerarn/{arn} | Semua lapisan |
fc:ListLayers | acs:fc:{region}:{uid}:layers/* | |
fc:PutLayerACL | acs:fc:{region}:{uid}:layers/{layerName} | |
fc:ListLayerVersions | acs:fc:{region}:{uid}:layers/{layerName}/versions/* | |
fc:CreateLayerVersion | acs:fc:{region}:{uid}:layers/{layerName}/versions/* | |
fc:DeleteLayerVersion | acs:fc:{region}:{uid}:layers/{layerName}/versions/{version} | |
fc:GetLayerVersion | acs:fc:{region}:{uid}:layers/{layerName}/versions/{version} | |
fc:ListProvisionConfigs | acs:fc:{region}:{uid}:provision-configs/* acs:fc:{region}:{uid}:functions/{functionName} | Konfigurasi instans terprovisi |
Anda dapat menggunakan kebijakan kustom di atas untuk mengonfigurasi izin untuk memanggil fungsi demo di wilayah China (Hangzhou). Potongan kode berikut menunjukkan detailnya:
{
"Version": "1",
"Statement": [
{
"Action": [
"fc:InvokeFunction"
],
"Resource": "acs:fc:cn-hangzhou:*:functions/demo",
"Effect": "Allow"
}
]
}Contoh Kebijakan
Kebijakan kustom untuk membuat dan menanyakan layanan serta membuat dan memanggil fungsi
{
"Version": "1",
"Statement": [{
"Action": [
"fc:CreateFunction",
"fc:GetFunction",
"fc:InvokeFunction"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"ram:PassRole"
],
"Effect": "Allow",
"Resource": "*"
}
]
}Kebijakan kustom untuk mengakses log
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"log:ListProject",
"log:ListLogStore"
],
"Resource": "acs:log:*:*:project/*"
}
]
}Kebijakan kustom untuk mengakses pemicu acara OSS
{
"Statement": [
{
"Action": [
"oss:ListBucket",
"oss:GetBucketEventNotification",
"oss:PutBucketEventNotification",
"oss:DeleteBucketEventNotification"
],
"Effect": "Allow",
"Resource": "*"
}
],
"Version": "1"
}Kebijakan kustom untuk melarang pembuatan layanan yang dapat mengakses Internet
{
"Version": "1",
"Statement": [
{
"Action": "fc:UpdateFunction",
"Effect": "Deny",
"Resource": "*",
"Condition": {
"StringEquals": {
"fc:EnableServiceInternetAccess": "true"
}
}
},
{
"Action": "fc:CreateFunction",
"Effect": "Deny",
"Resource": "*",
"Condition": {
"StringNotEquals": {
"fc:EnableServiceInternetAccess": "false"
}
}
}
]
}Kebijakan kustom untuk melarang pembuatan layanan yang tidak diizinkan mengakses Layanan Log Sederhana
{
"Version": "1",
"Statement": [
{
"Action": "fc:UpdateFunction",
"Effect": "Deny",
"Resource": "*",
"Condition": {
"StringEquals": {
"fc:EnableServiceSLSLogging": "false"
}
}
},
{
"Action": "fc:CreateFunction",
"Effect": "Deny",
"Resource": "*",
"Condition": {
"StringNotEquals": {
"fc:EnableServiceSLSLogging": "true"
}
}
}
]
}Kebijakan kustom untuk melarang pembuatan pemicu yang dapat diakses melalui Internet
{
"Version": "1",
"Statement": [
{
"Action": "fc:UpdateTrigger",
"Effect": "Deny",
"Resource": "*",
"Condition": {
"StringEquals": {
"fc:EnableHTTPTriggerInternet": "true"
}
}
},
{
"Action": "fc:CreateTrigger",
"Effect": "Deny",
"Resource": "*",
"Condition": {
"StringEquals": {
"fc:EnableHTTPTriggerInternet": "true"
}
}
}
]
}Kebijakan ini melarang pengguna menyetel parameter disableURLInternet ke false dalam operasi CreateTrigger dan UpdateTrigger. Nilai parameter ini hanya dapat disetel ke true, yang menunjukkan bahwa nama domain publik default tidak didukung. Batasan ini hanya berlaku untuk pemicu HTTP. Untuk informasi lebih lanjut, lihat HTTPTriggerConfig.
Dalam hal ini, kesalahan 403 AccessDenied dilaporkan jika Anda menyetel disableURLInternet=false. Kode berikut memberikan contohnya:
{
"statusCode":403,
"Code":"AccessDenied",
"Message":"the caller is not authorized to perform 'fc:CreateTrigger' on resource 'acs:fc:xx:xx:functions/xx/triggers/xx' with condition '[fc:EnableHTTPTriggerInternet=true]'"
}Kebijakan kustom untuk melarang pembuatan pemicu yang dapat diakses dalam mode anonim
{
"Version": "1",
"Statement": [
{
"Action": "fc:UpdateTrigger",
"Effect": "Deny",
"Resource": "*",
"Condition": {
"StringEquals": {
"fc:EnableHTTPTriggerAnonymous": "true"
}
}
},
{
"Action": "fc:CreateTrigger",
"Effect": "Deny",
"Resource": "*",
"Condition": {
"StringEquals": {
"fc:EnableHTTPTriggerAnonymous": "true"
}
}
}
]
}Kebijakan ini melarang pengguna menyetel parameter authType ke anonymous dalam operasi CreateTrigger dan UpdateTrigger. Nilai parameter ini hanya dapat disetel ke function, yang menentukan bahwa autentikasi diperlukan. Batasan ini hanya berlaku untuk pemicu HTTP. Untuk informasi lebih lanjut, lihat HTTPTriggerConfig.
Dalam hal ini, kesalahan 403 AccessDenied dilaporkan jika Anda menyetel authType=anonymous. Kode berikut memberikan contohnya:
{
"statusCode":403,
"Code":"AccessDenied",
"Message":"the caller is not authorized to perform 'fc:CreateTrigger' on resource 'acs:fc:xx:xx:functions/xx/triggers/xx' with condition '[fc:EnableHTTPTriggerAnonymous=true]'"
}Kebijakan kustom untuk melarang pembuatan nama domain kustom yang mengizinkan permintaan HTTP
{
"Version": "1",
"Statement": [
{
"Action": "fc:CreateCustomDomain",
"Effect": "Deny",
"Resource": "*",
"Condition": {
"StringEquals": {
"fc:EnableCustomDomainHTTP": "true"
}
}
},
{
"Action": "fc:UpdateCustomDomain",
"Effect": "Deny",
"Resource": "*",
"Condition": {
"StringEquals": {
"fc:EnableCustomDomainHTTP": "true"
}
}
}
]
}Kebijakan ini melarang pengguna menyetel parameter protocol ke HTTP atau HTTP,HTTPS dalam operasi CreateCustomDomain dan UpdateCustomDomain. Anda dapat menyetel parameter ini hanya ke HTTPS.
Kesalahan 403 AccessDenied dilaporkan jika Anda mencoba mengaktifkan HTTP untuk nama domain kustom. Kode berikut memberikan contohnya:
{
"statusCode":403,
"Code":"AccessDenied",
"Message":"the caller is not authorized to perform 'fc:CreateCustomDomain' on resource 'acs:fc:xxx:xxx:custom-domains/xxx' with condition '[fc:EnableCustomDomainHTTP=true]'"
}