Untuk mengizinkan pengguna RAM memanggil API Blockchain as a Service (BaaS), buat kebijakan otorisasi yang memberikan izin yang diperlukan. Dalam kebijakan tersebut, tentukan resource yang diizinkan menggunakan Nama Sumber Daya Alibaba Cloud (ARN)-nya.
Topik ini menjelaskan aturan otentikasi Resource Access Management (RAM) untuk layanan Blockchain as a Service (BaaS). Anda dapat menggunakan aturan ini untuk mengotentikasi anggota tim, memberikan akses resource lintas akun berbeda, serta mengotorisasi akses lintas layanan cloud. Untuk informasi selengkapnya tentang RAM, lihat dokumentasi RAM dan referensi API RAM.
Jenis resource Hyperledger Fabric yang dapat diotorisasi
Saat memberikan izin kepada pengguna RAM, deskripsikan resource Hyperledger Fabric sebagai berikut:
| Jenis sumber daya | Metode deskripsi resource dalam kebijakan otorisasi |
| Konsorsium | acs:baas:$regionId:$accountId:consortium/$consortiumId |
| Organisasi | acs:baas:$regionId:$accountId:organization/$organizationId |
| Saluran | acs:baas:*:$accountId:channel/$channelId |
| Chaincode | acs:baas:*:$accountId:chaincode/$chaincodeId |
Dalam format tersebut, $regionId adalah Wilayah tempat resource berada. $accountId adalah ID Akun Alibaba Cloud yang memiliki resource tersebut. $consortiumId/$organizationId/$channelId/$chaincodeId adalah ID resource tersebut di BaaS.
API Hyperledger Fabric yang dapat diotorisasi
Tabel berikut mencantumkan API blockchain Hyperledger Fabric yang diotorisasi secara default. Pengguna RAM dan pemegang token Security Token Service (STS) memiliki izin untuk API-API ini secara default:
| API |
| CheckFabricConsortiumDomain |
| CheckFabricOrganizationDomain |
| DescribeTasks |
| DescribeRootDomain |
| DescribeFabricConsortiumConfig |
| DescribeFabricConsortiumSpecs |
| DescribeFabricOrganizationSpecs |
| DescribeFabricInviter |
| DescribeFabricChaincodeUploadPolicy |
| AcceptFabricInvitation |
Tabel berikut mencantumkan API Hyperledger Fabric yang dapat diotorisasi beserta format ARN-nya:
| API | Deskripsi Sumber Daya |
| CreateFabricOrganization | acs:baas:$regionId:$accountId:organization/* |
| DescribeFabricOrganization | acs:baas:$regionId:$accountId:organization/$organizationId |
| DescribeFabricOrganizationDeletable | acs:baas:$regionId:$accountId:organization/$organizationId |
| DescribeFabricOrganizations | acs:baas:*:$accountId:organization/* |
| DescribeFabricCandidateOrganizations | acs:baas:*:$accountId:organization/* |
| CreateFabricChannel | acs:baas:*:$accountId:channel/* acs:baas:$regionId:$accountId:consortium/$consortiumId |
| DescribeFabricOrganizationChannels | acs:baas:$regionId:$accountId:organization/$organizationId |
| DescribeFabricConsortiumChannels | acs:baas:$regionId:$accountId:consortium/$consortiumId |
| CreateFabricChannelMember | acs:baas:*:$accountId:channel/$channelId |
| DescribeFabricChannelMembers | acs:baas:*:$accountId:channel/$channelId |
| JoinFabricChannel | acs:baas:*:$accountId:channel/$channelId |
| CreateFabricConsortium | acs:baas:$regionId:$accountId:consortium/* |
| CreateFabricConsortiumMember | acs:baas:$regionId:$accountId:consortium/$consortiumId |
| ConfirmFabricConsortiumMember | acs:baas:$regionId:$accountId:consortium/$consortiumId |
| DescribeFabricOrganizationMembers | acs:baas:$regionId:$accountId:organization/$organizationId |
| DescribeFabricOrganizationPeers | acs:baas:$regionId:$accountId:organization/$organizationId |
| DescribeFabricConsortiums | acs:baas:*:$accountId:consortium/* |
| DescribeFabricConsortiumAdminStatus | acs:baas:*:$accountId:consortium/* |
| DescribeFabricConsortiumMembers | acs:baas:$regionId:$accountId:consortium/$consortiumId |
| DescribeFabricConsortiumMemberApproval | acs:baas:$regionId:$accountId:consortium/$consortiumId |
| DescribeFabricConsortiumOrderers | acs:baas:$regionId:$accountId:consortium/$consortiumId |
| DescribeFabricConsortiumDeletable | acs:baas:$regionId:$accountId:consortium/$consortiumId |
| CreateFabricChaincode | acs:baas:*:$accountId:chaincode/* acs:baas:*:$accountId:channel/$channelId acs:baas:$regionId:$accountId:consortium/$consortiumId acs:baas:$regionId:$accountId:organization/$organizationId |
| DescribeFabricOrganizationChaincodes | acs:baas:$regionId:$accountId:organization/$organizationId |
| DescribeFabricConsortiumChaincodes | acs:baas:$regionId:$accountId:consortium/$consortiumId |
| DeleteFabricChaincode | acs:baas:*:$accountId:chaincode/$chaincodeId |
| InstallFabricChaincode | acs:baas:*:$accountId:chaincode/$chaincodeId acs:baas:$regionId:$accountId:organization/$organizationId |
| InstantiateFabricChaincode | acs:baas:*:$accountId:chaincode/$chaincodeId acs:baas:$regionId:$accountId:organization/$organizationId |
| UpgradeFabricChaincode | acs:baas:*:$accountId:chaincode/$chaincodeId acs:baas:$regionId:$accountId:organization/$organizationId |
| SynchronizeFabricChaincode | acs:baas:*:$accountId:chaincode/$chaincodeId acs:baas:$regionId:$accountId:organization/$organizationId |
| CreateFabricOrganizationUser | acs:baas:$regionId:$accountId:organization/$organizationId |
| DescribeFabricOrganizationUsers | acs:baas:$regionId:$accountId:organization/$organizationId |
| ResetFabricOrganizationUserPassword | acs:baas:$regionId:$accountId:organization/$organizationId |
| DownloadFabricOrganizationSDK | acs:baas:$regionId:$accountId:organization/$organizationId |
| DescribeFabricInvitationCode | acs:baas:$regionId:$accountId:consortium/$consortiumId |
Contoh aturan RAM Hyperledger Fabric
Contoh 1: Berikan izin read-only untuk BaaS. Izin ini memungkinkan pengguna melihat status blockchain dan mengunduh SDK melalui Konsol atau API.
{
"Statement": [{
"Action": ["baas:Describe*","baas:DownloadFabricOrganizationSDK"],
"Effect": "Allow",
"Resource": "acs:baas:*:*:*"
}],
"Version": "1"
}{
"Statement": [{
"Action": "baas:*Chaincode",
"Effect": "Allow",
"Resource": ["acs:baas:*:*:chaincode/*","acs:baas:*:*:organization/*", "acs:baas:*:*:consortium/*","acs:baas:*:*:channel/*"]
}],
"Version": "1"
}Contoh 3: Berikan izin detail halus kepada developer chaincode. Otorisasi ini biasanya memerlukan semua izin baca dan izin manajemen chaincode untuk organisasi tertentu. Sesuai prinsip hak istimewa minimal, pengguna dibatasi hanya untuk membuat chaincode pada konsorsium, organisasi, dan channel tertentu. Pengguna juga hanya dapat menginstal atau menginisialisasi chaincode pada organisasi tertentu. Ganti $consortiumId/$organizationId/$channelId dengan ID resource di BaaS.
{
"Statement": [{
"Action": ["baas:Describe*","baas:DownloadFabricOrganizationSDK"],
"Effect": "Allow",
"Resource": "acs:baas:*:*:*"
},
{
"Action": "baas:*Chaincode",
"Effect": "Allow",
"Resource": ["acs:baas:*:*:chaincode/*","acs:baas:*:*:organization/$organizationId","acs:baas:*:*:consortium/$consortiumId","acs:baas:*:*:channel/$channelId"]
}],
"Version": "1"
}