1. معرفی
در آموزش Hyperledger Fabric Damn ImplicitMetaPolicy به یک نمونه configtx.yaml اشاره می کنیم. این فایل نمونه طولانی است، بنابراین در این مقاله قرار نمی دهیم. پیشنهاد میکنیم سریع نگاهی بیندازید، سپس ادامه دهید. هر زمانکه نیاز بود به این صفحه configtx.yaml مراجعه کنید.
در نمونه configtx.yaml دو نوع خط مشی وجود دارد:
نوع اول – امضا
Readers:
Type: Signature
Rule: "OR('OrdererMSP.member')"
نوع دوم – ImplicitMeta
Readers:
Type: ImplicitMeta
Rule: "ANY Readers"
خط مشی نوع امضا آسان است، در حالی که خط مشی نوع ImplicitMeta انتزاعی است. این آموزش کوتاه برای توضیح نحوه تفسیر سیاست نوع ImplicitMeta است .
* فرض بر این است که در این آموزش، نام ImplicitMeta و هدف قانون ImplicitMeta همیشه یکسان است .
به عنوان مثال، سیاست نوع دوم، “خوانندگان” (در خط 1) و “خوانندگان” (در خط 3) یکسان هستند، اگرچه ممکن است متفاوت باشند.
2. سطح پیکربندی
در نمونه configtx.yam l ، سطوح مختلفی از پیکربندی وجود دارد، که در آن هر سطح زیرمجموعهای از آیتمهای «دسترسی یا پیکربندی» را نشان میدهد، مانند بهروزرسانی کانال.
پیشنهاد مطالعه: بهروزرسانی تنظیمات کانال در Hyperledger Fabric
در زیر نمایش ساختار درختی آن سطوح، مطابق نمونه configtx.yaml است .
Channel (top level)
Application
Org1
Org2
Orderer
OrdererOrg
3. نمایش سطح پیکربندی
با توجه به ساختار درختی، یک راه استاندارد برای نشان دادن آن سطوح وجود دارد.
به عنوان مثال، برای نشان دادن سطح “Orderer”، از موارد زیر استفاده می کنیم:
کانال\سفارش .
یک مثال دیگر، برای نشان دادن سطح “Org1″، از موارد زیر استفاده می کنیم:
Channel\Application\Org1 .
پیشنهاد مطالعه: آموزش ساخت اولین شبکه Hyperledger Fabric
4. خط مشی سطح پیکربندی
برای هر سطح، خط مشی هایی برای کنترل حقوق دسترسی های مختلف برای آیتم های «دسترسی یا پیکربندی» در آن سطح تعریف شده است.
5. دسترسی به نوع راست سیاست
برای هر خط مشی تعریف شده، یک نوع حق دسترسی اولیه مرتبط با خط مشی وجود دارد ، از جمله:
نویسندگان (برای نوشتن)
خوانندگان (برای خواندن)
مدیران (برای پیکربندی)
به عنوان مثال، یک خط مشی برای Reader (برای خواندن):
Readers:
Type: Signature
Rule: "OR('OrdererMSP.member')"
view rawconfigtx_0.yaml hosted with ❤ by GitHub
6. تفسیر خط مشی ImplicitMeta
برای ادامه، فرض کنید یک خط مشی نمونه در سطح Channel\Application داریم :
Readers:
Type: ImplicitMeta
Rule: "ANY Readers"
برای تفسیر این خط مشی ImplicitMeta ، لازم است:
6.1 سطح آن سیاست را بدانید
در این نمونه Channel\Application
6.2 فهرست تمام خط مشی ها با نوع حق دسترسی یکسان در سطح پایین ترکه معمولا این خط مشی های فهرست شده را به عنوان خط مشی های فرعی می نامند :
در این نمونه، آن خطمشیهای فرعی همان خطمشیهای «خوانندگان» در سطح Channel\Application\* هستند.
به این معنا که،
سیاست فرعی (الف): Channel\Application\Org1\Readers
سیاست فرعی (ب): Channel\Application\Org2\Readers
6.3 قانون سیاست را بدانید :
در این نمونه، این یک خطمشی «ANY» است.
همچنین “اکثریت” و “ALL” وجود دارد. آنها باید با نامشان به راحتی قابل درک باشند.
6.4 شرایط لازم برای تصویب این سیاست را بدانید:
در این نمونه، شرط این است که “هرگونه سیاست فرعی کافی است”.
بنابراین، هر یک از سیاستهای فرعی (a) و (b) برآورده میشود، سپس این خطمشی ImplicitMeta برآورده میشود.
7. یک مثال دیگر
بیایید یک نمونه دیگر در سطح کانال (که سطح بالایی است) داشته باشیم
Admins:
Type: ImplicitMeta
Rule: "MAJORITY Admins"
7.1 سطح آن سیاست را بدانید
در این نمونه کانال
7.2 فهرست تمام خط مشی ها با نوع حق دسترسی یکسان در سطح پایین تر که این خط مشی های فهرست شده را به عنوان خط مشی های فرعی می نامند
در این نمونه، آن خطمشیها همان خطمشیهای «مدیران» در کانال سطح هستند\*
زیر خط مشی (الف): Channel\Application\Admins
→ Channel\Application\Org1\Admins
→ Channel\Application\Org2\Admins
زیر خط مشی (ب): کانال\سفارش دهنده\مدیران
→ Channel\Orderer\OrdererOrg\Admins
7.3 قانون سیاست را بدانید
در این نمونه، این یک سیاست “اکثریت” است.
7.4 شرایط لازم برای تصویب این سیاست را بدانید
در این نمونه، شرط این است که «اکثریت سیاستهای فرعی باید برآورده شوند». بنابراین، هنگامی که اکثریت سیاستهای فرعی (a) و (b) برآورده شدند، این خط مشی ImplicitMeta برآورده میشود. در اینجا، “اکثریت” 2 مورد از آنها است (یعنی همه در این مورد).
8. پاداش 1
به مثال بالا ادامه دهید، اگر بخواهیم تنظیمات کانال را پیکربندی کنیم (چون یک خطمشی «Admin» است) (چون یک خطمشی در سطح کانال است)، یکی از شرایط گذراندن ممکن است عبور از خطمشیهای فرعی (a) و ( b) زیرا 2 سیاست فرعی وجود دارد و “اکثریت” در این مورد 2 مورد از آنها (همه آنها) است.
در نمونه configtx.yam l ، سیاستهای فرعی (a.1)، (a.2) و (b.1) خطمشیهای نوع امضا هستند.
به عبارت دیگر، یکی از شرایط گذراندن ممکن، جمعآوری امضاهای org1 admin، org2 admin و ordererOrg admin است، در این صورت ممکن است بتوانید تنظیمات کانال را در صورت عدم وجود خطا، پیکربندی کنید.
9. پاداش 2
بنابراین، به طور کلی، روش تفسیر سیاست ImplicitMeta نوعی «تفرقه و تسلط» است.
یعنی برای ارزیابی یک سیاست ImplicitMeta ، آن را به قطعات کوچکتر (زیر خط مشی) برش می دهیم و سعی می کنیم آنها را حل کنیم. اما آن قطعات کوچکتر ممکن است خودشان سیاستهای ImplicitMeta باشند ، سپس دوباره قطع میکنیم…
پس از برخی تقسیمبندیها، آن خطمشیهای فرعی پایینترین سطح، همان سیاستهای نوع امضا هستند ، نیازی به برش بیشتر نیست، آنها میتوانند فوراً حل شوند.