برنامه نویسی

بهره وری خود را با awscurl افزایش دهید: ساده کردن تست API با امنیت IAM در AWS

Summarize this content to 400 words in Persian Lang
با ابرهای مدرن، می توانید چیزهای شگفت انگیزی بسازید. شما می توانید ایده های خود را در عرض یک ساعت زنده کنید و آزمایش و نوآوری را تحریک کنید. یکی از مزایای قابل توجه ابر این است که کنترل های امنیتی زیادی را از جعبه دریافت می کنید. اما این کنترل‌های امنیتی می‌توانند شما را از مولد بودن نیز مسدود کنند!

چگونه این کنترل های امنیتی مرا مسدود می کنند؟

وقتی از AWS استفاده می کنید، می توانید از طریق کنسول، sdk یا cli با آن تعامل داشته باشید. اما همه اینها یک چیز مشترک دارند. همه آنها از مجموعه یکسانی از APIها برای انجام اقدامات درخواستی کاربر استفاده می کنند. این APIها محافظت می شوند و نحوه احراز هویت و مجوز از طریق سرویس IAM چگونه انجام می شود. وقتی حجم کاری ایجاد می کنید یا روی یک PoC کار می کنید، از سرویس IAM نیز استفاده خواهید کرد.

فرض کنید می خواهید یک API داخلی بسازید و از سرویس API Gateway استفاده کنید. فعال کردن احراز هویت IAM در روش هایی که تعریف می کنید آسان است. سپس می توانید به نقش های مناسب دسترسی به API خود بدهید. مصرف کننده این API فقط باید هدر AWSSigv4 را اضافه کند و تا زمانی که خط مشی نقش اجازه فراخوانی API را بدهد، کار خواهد کرد.

برای افزودن امضا می توان از زبان های برنامه نویسی مختلفی استفاده کرد. اما اگر بخواهید API را از دستگاه محلی خود یا پوسته ابری را از کنسول آزمایش کنید، چه؟ در این موارد، شما یک پوسته دارید و ایجاد امضا بسیار سخت تر می شود. این بر بهره وری شما تأثیر می گذارد.

چگونه می توانیم خودمان را رفع انسداد کنیم؟

همانطور که در بخش قبل توضیح داده شد، چالش تولید امضا بر اساس بار فعلی است. در گذشته، من از یک اسکریپت ساده پایتون برای انجام این فراخوانی های API استفاده می کردم، اما ساختن آن همیشه زمان و انرژی می گرفت. من هم وقتی با چنین موقعیت هایی مواجه می شدم احساس بی انگیزگی می کردم.

مشکل اسکریپتی نیست که باید بنویسید. مشکل این است که شما باید این کار را مکرر انجام دهید زیرا هر موقعیتی متفاوت است. این برخلاف یکی از اصول من است، یعنی خودکار کردن همه چیز! باید برای این مشکل راه حلی وجود داشته باشد و خبر خوب این است که راه حلی وجود دارد!

Igor Okulist ابزار کوچکی به نام awscurl ایجاد کرد. این ابزار به شما اجازه می دهد تا دستور curl را انجام دهید که به طور خودکار تماس API شما را امضا می کند. به عنوان مثال، وقتی از سناریویی که در بخش قبل توضیح داده شد استفاده می کنیم، می توانید به سادگی دستور زیر را انجام دهید:

export AWS_PROFILE=my-profile
awscurl –region eu-west-1 –service execute-api -X GET https://my-url-to-my-api

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مثال فرض می کند که شما یک نمایه معتبر به نام my-profile پیکربندی شده است. سپس، همان دستور دستور curl را انجام می دهید. اما شما فقط یک منطقه و یک گزینه سرویس به دستور اضافه می کنید. برای مقایسه، دستور curl معمولی به صورت زیر است:

curl -X GET https://my-url-to-my-api

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اما این دستور باعث خطای زیر می شود:

{“message”: “Missing Authentication Token”}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

دستور awscurl هدر Authorization را که چیزی شبیه به این است تزریق می کند:

Authorization: AWS4-HMAC-SHA256 Credential=XXX, SignedHeaders=XXX, Signature=XXX

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

وقتی خودتان این را امتحان کردید، می توانید آن را اضافه کنید -v گزینه ای که هدرهای ارسالی و دریافتی را چاپ می کند. خواهید دید که API اکنون امضا را می پذیرد و با نتایج واقعی پاسخ می دهد.

می‌توانید از آن برای انجام هر تماس API که از sigv4 پشتیبانی می‌کند استفاده کنید، اما برای اکثر سرویس‌ها، ابزار cli AWS بهترین ابزار برای این کار است. اما برای APIهای خود یا تماس‌های خوشه OpenSearch شما، این ابزار قطعاً یک صرفه‌جویی در زمان است.

نتیجه گیری

وقتی یک API داخلی ایجاد می‌کنید یا یک خوشه OpenSearch دارید که از IAM برای احراز هویت و مجوز استفاده می‌کند، آزمایش تماس‌ها به سمت این نقاط پایانی می‌تواند چالش‌برانگیز باشد زیرا باید یک امضا ایجاد کنید. ابزار cli awscurl به شما کمک می کند تا این امضا را ایجاد کنید و به شما این امکان را می دهد که به جای ایجاد امضا برای آزمایش، بر ارزش کسب و کار خود تمرکز کنید.

عکس از Pixabay

با ابرهای مدرن، می توانید چیزهای شگفت انگیزی بسازید. شما می توانید ایده های خود را در عرض یک ساعت زنده کنید و آزمایش و نوآوری را تحریک کنید. یکی از مزایای قابل توجه ابر این است که کنترل های امنیتی زیادی را از جعبه دریافت می کنید. اما این کنترل‌های امنیتی می‌توانند شما را از مولد بودن نیز مسدود کنند!

چگونه این کنترل های امنیتی مرا مسدود می کنند؟

وقتی از AWS استفاده می کنید، می توانید از طریق کنسول، sdk یا cli با آن تعامل داشته باشید. اما همه اینها یک چیز مشترک دارند. همه آنها از مجموعه یکسانی از APIها برای انجام اقدامات درخواستی کاربر استفاده می کنند. این APIها محافظت می شوند و نحوه احراز هویت و مجوز از طریق سرویس IAM چگونه انجام می شود. وقتی حجم کاری ایجاد می کنید یا روی یک PoC کار می کنید، از سرویس IAM نیز استفاده خواهید کرد.

فرض کنید می خواهید یک API داخلی بسازید و از سرویس API Gateway استفاده کنید. فعال کردن احراز هویت IAM در روش هایی که تعریف می کنید آسان است. سپس می توانید به نقش های مناسب دسترسی به API خود بدهید. مصرف کننده این API فقط باید هدر AWSSigv4 را اضافه کند و تا زمانی که خط مشی نقش اجازه فراخوانی API را بدهد، کار خواهد کرد.

برای افزودن امضا می توان از زبان های برنامه نویسی مختلفی استفاده کرد. اما اگر بخواهید API را از دستگاه محلی خود یا پوسته ابری را از کنسول آزمایش کنید، چه؟ در این موارد، شما یک پوسته دارید و ایجاد امضا بسیار سخت تر می شود. این بر بهره وری شما تأثیر می گذارد.

چگونه می توانیم خودمان را رفع انسداد کنیم؟

همانطور که در بخش قبل توضیح داده شد، چالش تولید امضا بر اساس بار فعلی است. در گذشته، من از یک اسکریپت ساده پایتون برای انجام این فراخوانی های API استفاده می کردم، اما ساختن آن همیشه زمان و انرژی می گرفت. من هم وقتی با چنین موقعیت هایی مواجه می شدم احساس بی انگیزگی می کردم.

مشکل اسکریپتی نیست که باید بنویسید. مشکل این است که شما باید این کار را مکرر انجام دهید زیرا هر موقعیتی متفاوت است. این برخلاف یکی از اصول من است، یعنی خودکار کردن همه چیز! باید برای این مشکل راه حلی وجود داشته باشد و خبر خوب این است که راه حلی وجود دارد!

Igor Okulist ابزار کوچکی به نام awscurl ایجاد کرد. این ابزار به شما اجازه می دهد تا دستور curl را انجام دهید که به طور خودکار تماس API شما را امضا می کند. به عنوان مثال، وقتی از سناریویی که در بخش قبل توضیح داده شد استفاده می کنیم، می توانید به سادگی دستور زیر را انجام دهید:

export AWS_PROFILE=my-profile
awscurl --region eu-west-1 --service execute-api -X GET https://my-url-to-my-api
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مثال فرض می کند که شما یک نمایه معتبر به نام my-profile پیکربندی شده است. سپس، همان دستور دستور curl را انجام می دهید. اما شما فقط یک منطقه و یک گزینه سرویس به دستور اضافه می کنید. برای مقایسه، دستور curl معمولی به صورت زیر است:

curl -X GET https://my-url-to-my-api
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اما این دستور باعث خطای زیر می شود:

{"message": "Missing Authentication Token"}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

دستور awscurl هدر Authorization را که چیزی شبیه به این است تزریق می کند:

Authorization: AWS4-HMAC-SHA256 Credential=XXX, SignedHeaders=XXX, Signature=XXX
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

وقتی خودتان این را امتحان کردید، می توانید آن را اضافه کنید -v گزینه ای که هدرهای ارسالی و دریافتی را چاپ می کند. خواهید دید که API اکنون امضا را می پذیرد و با نتایج واقعی پاسخ می دهد.

می‌توانید از آن برای انجام هر تماس API که از sigv4 پشتیبانی می‌کند استفاده کنید، اما برای اکثر سرویس‌ها، ابزار cli AWS بهترین ابزار برای این کار است. اما برای APIهای خود یا تماس‌های خوشه OpenSearch شما، این ابزار قطعاً یک صرفه‌جویی در زمان است.

نتیجه گیری

وقتی یک API داخلی ایجاد می‌کنید یا یک خوشه OpenSearch دارید که از IAM برای احراز هویت و مجوز استفاده می‌کند، آزمایش تماس‌ها به سمت این نقاط پایانی می‌تواند چالش‌برانگیز باشد زیرا باید یک امضا ایجاد کنید. ابزار cli awscurl به شما کمک می کند تا این امضا را ایجاد کنید و به شما این امکان را می دهد که به جای ایجاد امضا برای آزمایش، بر ارزش کسب و کار خود تمرکز کنید.

عکس از Pixabay

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا