Resource Access Management (RAM) vous permet d'accorder aux utilisateurs RAM et aux détenteurs de jetons Security Token Service (STS) un accès précis aux ressources Blockchain as a Service (BaaS). Utilisez l'authentification RAM pour gérer l'accès des membres de votre équipe, partager des ressources entre plusieurs comptes Alibaba Cloud ou déléguer l'accès entre les services cloud.
Pour en savoir plus sur RAM, consultez la documentation RAM et la référence API RAM.
Types de ressources autorisables
Les ressources Hyperledger Fabric dans BaaS utilisent les formats ARN (Alibaba Cloud Resource Name) suivants dans les politiques d'autorisation :
| Type de ressource | Format ARN |
|---|---|
| Consortium | acs:baas:$regionId:$accountId:consortium/$consortiumId |
| Organisation | acs:baas:$regionId:$accountId:organization/$organizationId |
| Canal | acs:baas:*:$accountId:channel/$channelId |
| Chaincode | acs:baas:*:$accountId:chaincode/$chaincodeId |
Référence des champs ARN :
$regionId: région où se trouve la ressource.$accountId: ID du compte Alibaba Cloud propriétaire de la ressource.$consortiumId/$organizationId/$channelId/$chaincodeId: ID de la ressource dans BaaS.
Les canaux et les chaincodes sont des ressources globales. Définissez
$regionId
sur
*
pour ces types de ressources.
API autorisées par défaut
Tous les utilisateurs RAM et les détenteurs de jetons STS peuvent accéder aux API suivantes sans politique explicite :
| API |
|---|
| CheckFabricConsortiumDomain |
| CheckFabricOrganizationDomain |
| DescribeTasks |
| DescribeRootDomain |
| DescribeFabricConsortiumConfig |
| DescribeFabricConsortiumSpecs |
| DescribeFabricOrganizationSpecs |
| DescribeFabricInviter |
| DescribeFabricChaincodeUploadPolicy |
| AcceptFabricInvitation |
API autorisables
Le tableau ci-dessous répertorie toutes les API nécessitant une autorisation explicite. La colonne Access level indique l'impact de chaque action afin de vous aider à appliquer le principe du moindre privilège :
List : renvoie une collection de ressources. Impact faible.
Read : renvoie les détails d'une ressource spécifique ou télécharge des artefacts. Impact faible.
Write : crée, modifie ou supprime des ressources. Impact plus élevé — définissez soigneusement la portée des autorisations.
| API | Access level | Resource ARN |
|---|---|---|
| CreateFabricOrganization | Write | acs:baas:$regionId:$accountId:organization/* |
| DescribeFabricOrganization | Read | acs:baas:$regionId:$accountId:organization/$organizationId |
| DescribeFabricOrganizationDeletable | Read | acs:baas:$regionId:$accountId:organization/$organizationId |
| DescribeFabricOrganizations | List | acs:baas:*:$accountId:organization/* |
| DescribeFabricCandidateOrganizations | List | acs:baas:*:$accountId:organization/* |
| CreateFabricChannel | Write | acs:baas:*:$accountId:channel/*
|
| DescribeFabricOrganizationChannels | List | acs:baas:$regionId:$accountId:organization/$organizationId |
| DescribeFabricConsortiumChannels | List | acs:baas:$regionId:$accountId:consortium/$consortiumId |
| CreateFabricChannelMember | Write | acs:baas:*:$accountId:channel/$channelId |
| DescribeFabricChannelMembers | List | acs:baas:*:$accountId:channel/$channelId |
| JoinFabricChannel | Write | acs:baas:*:$accountId:channel/$channelId |
| CreateFabricConsortium | Write | acs:baas:$regionId:$accountId:consortium/* |
| CreateFabricConsortiumMember | Write | acs:baas:$regionId:$accountId:consortium/$consortiumId |
| ConfirmFabricConsortiumMember | Write | acs:baas:$regionId:$accountId:consortium/$consortiumId |
| DescribeFabricOrganizationMembers | List | acs:baas:$regionId:$accountId:organization/$organizationId |
| DescribeFabricOrganizationPeers | List | acs:baas:$regionId:$accountId:organization/$organizationId |
| DescribeFabricConsortiums | List | acs:baas:*:$accountId:consortium/* |
| DescribeFabricConsortiumAdminStatus | Read | acs:baas:*:$accountId:consortium/* |
| DescribeFabricConsortiumMembers | List | acs:baas:$regionId:$accountId:consortium/$consortiumId |
| DescribeFabricConsortiumMemberApproval | Read | acs:baas:$regionId:$accountId:consortium/$consortiumId |
| DescribeFabricConsortiumOrderers | List | acs:baas:$regionId:$accountId:consortium/$consortiumId |
| DescribeFabricConsortiumDeletable | Read | acs:baas:$regionId:$accountId:consortium/$consortiumId |
| CreateFabricChaincode | Write | acs:baas:*:$accountId:chaincode/*
|
| DescribeFabricOrganizationChaincodes | List | acs:baas:$regionId:$accountId:organization/$organizationId |
| DescribeFabricConsortiumChaincodes | List | acs:baas:$regionId:$accountId:consortium/$consortiumId |
| DeleteFabricChaincode | Write | acs:baas:*:$accountId:chaincode/$chaincodeId |
| InstallFabricChaincode | Write | acs:baas:*:$accountId:chaincode/$chaincodeId
|
| InstantiateFabricChaincode | Write | acs:baas:*:$accountId:chaincode/$chaincodeId
|
| UpgradeFabricChaincode | Write | acs:baas:*:$accountId:chaincode/$chaincodeId
|
| SynchronizeFabricChaincode | Write | acs:baas:*:$accountId:chaincode/$chaincodeId
|
| CreateFabricOrganizationUser | Write | acs:baas:$regionId:$accountId:organization/$organizationId |
| DescribeFabricOrganizationUsers | List | acs:baas:$regionId:$accountId:organization/$organizationId |
| ResetFabricOrganizationUserPassword | Write | acs:baas:$regionId:$accountId:organization/$organizationId |
| DownloadFabricOrganizationSDK | Read | acs:baas:$regionId:$accountId:organization/$organizationId |
| DescribeFabricInvitationCode | Read | acs:baas:$regionId:$accountId:consortium/$consortiumId |
Les API qui opèrent sur les canaux ou les chaincodes requièrent
*
comme région dans l'ARN de ressource correspondant, car les canaux et les chaincodes sont des ressources globales. Les autorisations accordées sur une ressource de consortium ou d'organisation ne s'étendent pas automatiquement aux canaux ou aux chaincodes associés à cette ressource ; incluez explicitement chaque type de ressource dans la politique.
Exemples de politiques
Exemple 1 : Accès en lecture seule
Accorde un accès en lecture à toutes les ressources BaaS et la possibilité de télécharger les SDK d'organisation. Cette configuration convient aux auditeurs ou aux membres de l'équipe qui doivent consulter l'état de la blockchain sans effectuer de modifications.
{
"Statement": [
{
"Sid": "ReadAllBaaSResources",
"Action": ["baas:Describe*", "baas:DownloadFabricOrganizationSDK"],
"Effect": "Allow",
"Resource": "acs:baas:*:*:*"
}
],
"Version": "1"
}
Exemple 2 : Gestion des chaincodes
Accorde des autorisations complètes sur le cycle de vie des chaincodes (téléchargement, installation, instanciation, mise à niveau et suppression) pour toutes les organisations, consortiums et canaux. Cette configuration est adaptée aux administrateurs de chaincodes.
{
"Statement": [
{
"Sid": "ManageAllChaincodes",
"Action": "baas:*Chaincode",
"Effect": "Allow",
"Resource": [
"acs:baas:*:*:chaincode/*",
"acs:baas:*:*:organization/*",
"acs:baas:*:*:consortium/*",
"acs:baas:*:*:channel/*"
]
}
],
"Version": "1"
}
Exemple 3 : Accès granulaire pour un développeur de chaincode
Combine un accès en lecture seule sur toutes les ressources avec des autorisations de gestion des chaincodes limitées à des consortiums, organisations et canaux spécifiques. Cette approche applique le principe du moindre privilège.
Remplacez $consortiumId, $organizationId et $channelId par les ID de ressource réels issus de BaaS.
Les ARN de canal et de chaincode doivent utiliser
*
comme région, indépendamment de la région spécifiée pour le consortium ou l'organisation. Les autorisations sur un consortium ou une organisation ne se propagent pas aux canaux ou aux chaincodes associés ; vous devez lister chaque type de ressource séparément.
{
"Statement": [
{
"Sid": "ReadAllBaaSResources",
"Action": ["baas:Describe*", "baas:DownloadFabricOrganizationSDK"],
"Effect": "Allow",
"Resource": "acs:baas:*:*:*"
},
{
"Sid": "ManageChaincodeInScopedResources",
"Action": "baas:*Chaincode",
"Effect": "Allow",
"Resource": [
"acs:baas:*:*:chaincode/*",
"acs:baas:*:*:organization/$organizationId",
"acs:baas:*:*:consortium/$consortiumId",
"acs:baas:*:*:channel/$channelId"
]
}
],
"Version": "1"
}