RAM ユーザーが Blockchain as a Service (BaaS) の API を呼び出せるようにするには、必要な権限を付与する権限付与ポリシーを作成します。ポリシーでは、Alibaba Cloud リソースネーム (ARN) を使用して、権限を付与するリソースを指定します。
この Topic では、Blockchain as a Service (BaaS) の Resource Access Management (RAM) 認証ルールについて説明します。これらのルールを使用して、チームメンバーの認証、異なるアカウント間でのリソースアクセス権の付与、およびクラウドサービス間でのアクセス権の付与を行うことができます。RAM の詳細については、RAM ドキュメントおよびRAM API リファレンスをご参照ください。
権限付与可能な Hyperledger Fabric のリソースタイプ
RAM ユーザーに権限を付与する際、Hyperledger Fabric のリソースは次のように記述します:
| リソースタイプ | 権限付与ポリシーでのリソース記述方法 |
| コンソーシアム | acs:baas:$regionId:$accountId:consortium/$consortiumId |
| 組織 | acs:baas:$regionId:$accountId:organization/$organizationId |
| チャンネル | acs:baas:*:$accountId:channel/$channelId |
| チェーンコード | acs:baas:*:$accountId:chaincode/$chaincodeId |
これらのフォーマットでは、$regionId はリソースが配置されているリージョンです。$accountId はリソースを所有する Alibaba Cloud アカウントの ID です。$consortiumId/$organizationId/$channelId/$chaincodeId は BaaS におけるリソースの ID です。
権限付与可能な Hyperledger Fabric の API
次の表は、デフォルトで権限が付与されている Hyperledger Fabric ブロックチェーンの API のリストです。RAM ユーザーおよびセキュリティトークンサービス (STS) トークン保有者は、デフォルトでこれらの API に対する権限を持っています:
| API |
| CheckFabricConsortiumDomain |
| CheckFabricOrganizationDomain |
| DescribeTasks |
| DescribeRootDomain |
| DescribeFabricConsortiumConfig |
| DescribeFabricConsortiumSpecs |
| DescribeFabricOrganizationSpecs |
| DescribeFabricInviter |
| DescribeFabricChaincodeUploadPolicy |
| AcceptFabricInvitation |
次の表は、Hyperledger Fabric で権限付与可能な API と、それに対応する ARN フォーマットのリストです:
| API | リソース記述 |
| 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 |
Hyperledger Fabric の RAM ルールの例
例 1:BaaS の読み取り専用権限を付与します。これらの権限により、ユーザーはコンソールまたは API を使用してブロックチェーンのステータスを表示し、SDK をダウンロードできます。
{
"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"
}例 3:チェーンコード開発者に詳細な権限を付与します。この権限付与では通常、すべての読み取り権限と、特定の組織に対するチェーンコード管理権限が必要です。最小権限の原則に従い、ユーザーは指定されたコンソーシアム、組織、およびチャンネルに対してのみチェーンコードを作成できるように制限されます。また、ユーザーは特定の組織にのみチェーンコードをインストールまたはインスタンス化できます。$consortiumId/$organizationId/$channelId を BaaS のリソース ID に置き換えてください。
{
"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"
}