۲۹ شهریور ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

آیا استقرار AWS شما با تعاریف Terraform شما مطابقت دارد؟ برای پیدا کردن این موضوع از SQL استفاده کنید.

برای امنیت و انطباق با تسمه و آویز، از SQL برای استعلام فایل‌های Terraform خود به همان روشی که سرویس‌های AWS، Azure یا GCP خود را پرس و جو می‌کنید، استفاده کنید.

برای امنیت و انطباق با تسمه و آویز، از SQL برای استعلام فایل‌های Terraform خود به همان روشی که سرویس‌های AWS، Azure یا GCP خود را پرس و جو می‌کنید، استفاده کنید.

در «چگونه SQL می‌تواند دسترسی به APIها را یکپارچه کند؟» من از SQL به عنوان یک محیط مشترک برای استدلال در مورد جریان داده‌ها از بسیاری از APIهای مختلف استفاده کردم. فعال‌کننده کلیدی این سناریو Steampipe است، ابزاری مبتنی بر Postgres با مجموعه‌ای از افزونه های API که API ها را به جداول خارجی در Postgres نگاشت می کنند.

این APIها در ابتدا آنهایی بودند که توسط AWS، Azure و GCP ارائه شده بودند. چنین APIهایی معمولاً از طریق بسته‌بندی‌هایی مانند boto3 در دسترس توسعه‌دهندگان قرار می‌گیرند. یک رابط رایج SQL مسلماً یک متحد کننده بهتر از API گسترده است. اکوسیستم‌های درون این ابرها، و این در سناریوهای چند ابری بی‌گمان درست است. به هر حال، با Postgres در زیر سرپوش، شما محدود به SQL نیستید: می‌توانید پایتون یا جاوا اسکریپت یا زبان دیگری را به Postgres متصل کنید و از رابط مشترک SQL از آن زبان‌ها نیز استفاده کنید.

اکوسیستم Steampipe سپس با افزونه‌ها برای بسیاری از سرویس‌های دیگر از جمله GitHub، Google Workspace، IMAP، Jira گسترش یافت. ، LDAP، Shodan، Slack، Stripe و Zendesk. پیوستن به این APIها یک ابرقدرت است که با این مثال به بهترین وجه اثبات شده است که به نقاط پایانی EC2 آمازون با آسیب‌پذیری‌های Shodan فقط در ۱۰ خط SQL بسیار ابتدایی می‌پیوندد.

select
  a.instance_id,
  s.ports
  s.vulns
from
  aws_ec2_instance a
left join
  shodan_host s on a.public_ip_address = s.ip
where
  a.public_ip_address is not null;

+---------------------+----------+--------------------+
| instance_id         | ports    | vulns              |
+---------------------+----------+--------------------+
| i-0dc60dd191cb84239 | null     | null               |
| i-042a51a815773780d | [80,22]  | null               |
| i-00cf426db9b8a58b6 | [22]     | null               |
| i-0e97f373db42dfa3f | [22,111] | ["CVE-2018-15919"] |
+---------------------+----------+--------------------+

فایل ها نیز API هستند

اما واقعا API چیست؟ آیا همیشه باید شامل درخواست‌های HTTP برای سرویس‌دهی نقاط پایانی باشد؟ به طور گسترده‌تر APIها منابع داده‌ای هستند که در طعم‌های دیگری نیز وجود دارند. صفحات وب اغلب، هنوز هم APIهای واقعی هستند. من در طول سال‌ها بیشتر از آنچه فکر می‌کردم وب‌سایتی انجام داده‌ام و این مهارت همچنان مفید است.

نحوه استفاده از لانچر پایتون برای ویندوز

فایل‌ها نیز منابع داده هستند: فایل‌های پیکربندی (INI، YAML، JSON)، فایل های زیرساخت به عنوان کد (Terraform، CloudFormation)، فایل های داده (CSV). هنگامی که افزونه‌های این منابع شروع به پیوستن به ترکیب کردند، Steampipe حتی قدرتمندتر شد.

ابتدا پلاگین CSV آمد که قفل انواع جستجوهای مفید را باز کرد. برای مثال، در نظر بگیرید که چگونه اغلب وانمود می کنیم که صفحات گسترده پایگاه داده هستند. در انجام این کار می توانیم فرض کنیم که یکپارچگی ارجاعی وجود دارد در حالی که واقعاً وجود ندارد. اگر داده‌های صفحه‌گسترده را به CSV صادر می‌کنید، می‌توانید از SQL برای پیدا کردن آن فرضیات ناقص استفاده کنید. و این تنها یکی از راه‌های بی‌پایانی است که می‌توانم تصور کنم از SQL برای جستجو در قالب فایل پیشرو در جهان برای تبادل داده استفاده کنم.

مشخصات زبان سی شارپ تایید شد

سپس افزونه Terraform آمد که فایل‌های Terraform را برای پرسیدن و پاسخ دادن به سوالاتی مانند : “کدام مسیرها رمزگذاری نشده اند؟”

select
  name,
  path
from
  terraform_resource
where
  type = 'aws_cloudtrail'
  and arguments -> 'kms_key_id' is null;

با استفاده از جدول aws_cloudtrail_trail افزونه AWS، می‌توانیم بپرسیم و پاسخ دهیم همین سوال برای زیرساخت های مستقر شده، و مجموعه نتایجی را که می توانید با اولین مورد یونیون کنید، برگردانید.

select
  name,
  arn as path
from
  aws_cloudtrail_trail
where
  kms_key_id is null;

در حالت ایده آل، پاسخ ها همیشه یکسان خواهند بود. اگر از APIهای AWS پرس و جو کنید، آنچه گفتید باید با استفاده از Terraform اجرا شود، باید با آنچه که واقعاً مستقر شده است مطابقت داشته باشد. در دنیای واقعی، البته، نگهداری و/یا پاسخ حادثه می‌تواند منجر به انحراف پیکربندی شود. با توجه به روشی متداول برای استدلال بر روی زیرساخت های تعریف شده و مستقر شده، می توانیم چنین رانشی را به صورت برنامه ریزی شده مدیریت کنیم.

Microsoft Dev Box: ایستگاه کاری توسعه شما در Azure

کمربند و آویز

برای زیرساخت‌های مستقر، Steampipe مدت‌هاست که مجموعه‌ای از حالت‌ها ارائه کرده است که امنیت لایه و انطباق را بر روی API مشتق شده بررسی می‌کند. میزهای خارجی برای مثال، مد انطباق با AWS، معیارها و کنترل‌هایی را برای بررسی زیرساخت‌های مستقر در برابر یازده استاندارد ارائه می‌کند. و چارچوب هایی از جمله CIS، GDPR، HIPAA، NIST 800-53، و SOC 2.

steampipe aws cis v140 console

با ظهور پلاگین Terraform، امکان ایجاد مدهای تکمیلی، مانند انطباق Terraform AWS< /a>، که همان نوع بررسی‌ها را برای زیرساخت‌های تعریف‌شده ارائه می‌کند.

خروجی کنسول سازگاری steampipe terraform aws

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