با استفاده از نقاط پایانی VPC از طریق SQL، در سطل های عمومی S3 صرفه جویی کنید
آیا از سطل های S3 به عنوان بخشی از استقرار ابر خود استفاده می کنید؟ چگونه به آنها دسترسی دارید؟
هنگام اجرای برنامه های کاربردی در پشت VPC ها بدون دسترسی عمومی، ممکن است نیاز به دسترسی به سطل های S3 از زیر شبکه خصوصی از طریق اینترنت عمومی وجود داشته باشد.
یک راه ساده اما پرهزینه برای انجام این کار، تکیه بر دروازه های NAT است.
با این حال، ایجاد Gateway یا Interface VPC endpoints برای هر منطقه ای که سطل های شما در معرض آن قرار دارند، راه حل بهینه تری است.
هنگامی که نقاط پایانی VPC فعال هستند، می توانید با استفاده از این نقطه پایانی به سطل های S3 خود دسترسی داشته باشید. در این پست، نحوه کنترل سطل های خود را از یک شبکه داخلی با امنیت مورد نظر و بدون هزینه های اضافی دروازه NAT با استفاده از نقطه پایانی VPC و IaSQL به شما آموزش خواهیم داد. IaSQL یک ابزار نرم افزار منبع باز است که یک ارتباط دو طرفه بین یک پایگاه داده PostgreSQL اصلاح نشده و یک حساب AWS ایجاد می کند تا بتوانید زیرساخت خود را از یک پایگاه داده مدیریت کنید.
چرا از VPC Interface Endpoints استفاده کنیم؟
نقاط پایانی رابط VPC AWS جزء زیرساخت PrivateLink AWS هستند. AWS PrivateLink اتصال خصوصی بین ابرهای خصوصی مجازی (VPC)، سرویسهای AWS پشتیبانیشده و شبکههای داخلی شما بدون اینکه ترافیک شما را در معرض اینترنت عمومی قرار دهد، فراهم میکند.
تکیه بر PrivateLink مجموعه ای از مزیت ها را از نظر ارائه می دهد هزینه، امنیت و کارایی.
هزینه
هنگام استفاده از دروازه های NAT، شما برای خود دروازه NAT و پهنای باند استفاده شده برای دسترسی به اینترنت هزینه می کنید. دروازه NAT یک راه عمومی برای دسترسی نمونه های خصوصی به اینترنت است و می تواند برای استفاده عمومی مانند کشیدن وابستگی ها، به روز رسانی مخازن و غیره مفید باشد… اما وقتی برای دسترسی مستقیم به منابع AWS استفاده می شود، بهینه تر و ارزان تر است. راه حل هایی مانند نقاط پایانی VPC – آنها دسترسی عمومی به اینترنت ندارند، بلکه فقط به نقاط پایانی عمومی مشخص شده AWS دسترسی خواهند داشت. هنگام استفاده از نقاط پایانی VPC، شما برای پهنای باندی که برای دسترسی به نقاط پایانی عمومی استفاده می شود، پرداخت می کنید، اما نه برای خود نقطه پایانی VPC.
هزینه های دروازه NAT به هر منطقه بستگی دارد، اما باید تمام شود 0.045 دلار در ساعت در هر گیگابایت پردازش + 0.045 دلار در ساعت برای مثال خود هزینه برای نقاط پایانی VPC محاسبه می شود 0.01 دلار در ساعت در هر گیگابایت پردازش شده، پس از اولین PB ارزان تر است.
جزء | قیمت ساعتی | قیمت هر گیگابایت |
---|---|---|
دروازه NAT | 0.045 دلار در ساعت | 0.45 دلار در ساعت در هر گیگابایت |
نقطه پایانی VPC | — | 0.01 USD/ساعت در هر گیگابایت |
امنیت: بدون پیمایش اینترنتی
هنگام استقرار خدمات در تولید، مفهوم دفاع در عمق ضروری است: داشتن یک استراتژی تضمین اطلاعات که اقدامات دفاعی متعدد و اضافی را در صورت شکست یک کنترل امنیتی یا سوء استفاده از یک آسیبپذیری ارائه میکند.
با استفاده از نقاط پایانی رابط، خدمات از طریق شبکه های داخلی آمازون قابل دسترسی خواهند بود. این یک اقدام امنیتی ضروری است که از دسترسی مستقیم مهاجمان به سرویس ها با نگه داشتن آنها در یک شبکه خصوصی جلوگیری می کند و سطح حمله را کاهش می دهد.
امنیت: سیاست ها
خدمات AWS می توانند از سیاست های IAM برای کنترل دسترسی دقیق بهره مند شوند. هنگام استفاده از نقاط پایانی رابط، این سیاست ها را می توان برای تعیین ترافیکی که می تواند از رابط عبور کند اعمال کرد.
عملکرد: تاخیر
از آنجایی که ترافیک در شبکههای آمازون باقی میماند، مسافت فیزیکی طی شده، تعداد پرشها و خطر عبور از شبکههای شلوغ به میزان قابل توجهی کمتر است.
عملکرد: پهنای باند
PrivateLink از پهنای باند پایدار 10 گیگابیت در ثانیه در هر منطقه در دسترس با انفجار تا 40 گیگابیت در ثانیه پشتیبانی می کند.
عملکرد: ثبات
PrivateLink به طور مداوم تعداد خطاها و وقفه های زمانی را در بارهای بالا کاهش می دهد. زمانی که ترافیک از طریق Private Link در شبکه های آمازون باقی بماند، مسافت طی شده، تعداد پرش ها و خطرات مرتبط با عبور از شبکه های شلوغ کاهش می یابد.
از نظر سرعت، Private Link از پهنای باند پایدار 10 گیگابیت بر ثانیه در هر منطقه در دسترس با انفجار تا 40 گیگابیت در ثانیه پشتیبانی می کند.
آیا می خواهید بدانید که آیا آن را به درستی پیکربندی کرده اید؟ پرس و جوی زیر نقاط پایانی رابط VPC فعال S3 را بررسی می کند:
این پرس و جو سطل های S3 فعال شما را برای همه مناطق مرتبط با دروازه ها یا رابط های نقطه پایانی موجود – در صورت وجود – پیدا می کند.
-- Installing the needed modules
SELECT
iasql_install ('aws_s3', 'aws_vpc');
-- Perform the query for endpoints
SELECT
bucket.region,
vpc.is_default,
vpc.cidr_block,
(
SELECT
COUNT(*) > 0
FROM
endpoint_gateway
WHERE
endpoint_gateway.region = bucket.region
AND service = 's3'
AND endpoint_gateway.vpc_id = vpc.id
) AS has_endpoint_gateway,
(
SELECT
COUNT(*) > 0
FROM
endpoint_interface
WHERE
endpoint_interface.region = bucket.region
AND service = 's3'
AND endpoint_interface.vpc_id = vpc.id
) AS has_endpoint_interface
FROM
bucket
LEFT OUTER JOIN vpc ON vpc.region = bucket.region;
آیا نقاط پایانی گم شده را پیدا کرده اید؟ مشکلی نیست، IaSQL می تواند آنها را برای شما تولید کند. شما می توانید دو نوع مختلف نقطه پایانی ایجاد کنید: دروازه و رابط. ما قصد داریم ویژگی های اصلی آنها را شرح دهیم و می توانید نوع مورد نظر را به صورت خودکار ایجاد کنید.
نقاط پایانی رابط
نقطه پایانی رابط یک رابط شبکه الاستیک با یک آدرس IP خصوصی است که به عنوان یک نقطه ورودی برای ترافیک مقصد برای یک سرویس AWS پشتیبانی شده عمل می کند. از آنجایی که آنها از ENI استفاده می کنند، می توانند از گروه های امنیتی برای کنترل ترافیک بهره ببرند.
سیاست های IAM نیز می تواند باشد
برای کنترل دسترسی به آن نقاط پایانی اضافه شده است.
آنها منطقه ای هستند، به این معنی که فقط توسط همان منطقه ای که ایجاد شده اند قابل دسترسی هستند. با این حال، Multi-region با استفاده از همتاسازی VPC امکان پذیر است، بنابراین منابع موجود در یک منطقه را می توان از سایرین دسترسی داشت، اگرچه این فقط از ترافیک IPv4 TCP پشتیبانی می کند.
یک نقطه پایانی رابط (به جز نقطه پایانی رابط S3) یک نام میزبان DNS خصوصی مربوطه دارد که می تواند برای دسترسی به منبع استفاده شود.
نقاط پایانی رابط طیف گسترده ای از خدمات مانند S3، Lambda، API Gateway و غیره را پوشش می دهند… جزئیات بیشتری در مورد نقاط پایانی رابط دریافت کنید.
این پرس و جو به طور خودکار نقاط پایانی رابط از دست رفته را ایجاد می کند و تغییرات اعمال شده در ابر شما را پیش نمایش می کند. به سادگی بیانیه نهایی را حذف کنید و آن را اجرا کنید تا تغییرات را در حساب ابری خود ایجاد کنید.
-- Inserts the missing endpoints
SELECT
*
FROM
iasql_begin ();
INSERT INTO
endpoint_interface (region, vpc_id, service)
SELECT
bucket.region,
vpc.id,
's3'
FROM
bucket
INNER JOIN vpc ON bucket.region = vpc.region
WHERE
NOT EXISTS (
SELECT
id
FROM
endpoint_interface
WHERE
endpoint_interface.region = bucket.region
AND endpoint_interface.vpc_id = vpc.id
);
-- Preview the changes
SELECT
*
FROM
iasql_preview ();
-- Commit the changes
-- SELECT * FROM iasql_commit();
-- Rollback changes
-- SELECT * FROM iasql_rollback();
دروازه های نقطه پایانی
دروازه پایانی دروازه ای است که می تواند به عنوان یک هدف برای یک مسیر در جدول مسیر شما پیکربندی شود و برای دسترسی به ترافیک در DynamoDB یا S3 استفاده شود.
چندین نقطه پایانی دروازه را می توان در یک VPC ایجاد کرد و می توان از آنها در جداول مسیرهای مختلف برای اعمال سیاست های دسترسی متفاوت از زیر شبکه های مختلف به یک سرویس استفاده کرد.
نقاط پایانی دروازه فقط در یک منطقه پشتیبانی می شوند، منابع از چندین منطقه حتی با استفاده از همتاسازی VPC قابل دسترسی نیستند. آنها همچنین فقط از ترافیک IPv4 پشتیبانی می کنند.
برای استفاده از آنها، وضوح DNS باید در VPC فعال باشد.
هنگامی که یک مسیر اضافه می شود، تمام نمونه های موجود در زیرشبکه های مرتبط با جدول مسیر به طور خودکار از نقطه پایانی برای دسترسی به سرویس استفاده می کنند.
نقاط پایانی دروازه فقط از خدمات S3 و DynamoDB پشتیبانی می کنند. جزئیات بیشتری در مورد نقاط پایانی دروازه دریافت کنید.
این پرسوجو بهطور خودکار دروازههای نقطه پایانی گمشده را ایجاد میکند و به شما امکان میدهد تا تغییرات اعمال شده در ابر خود را پیشنمایش کنید.
-- Inserts the missing endpoints
SELECT
*
FROM
iasql_begin ();
INSERT INTO
endpoint_gateway (region, vpc_id, service)
SELECT
bucket.region,
vpc.id,
's3'
FROM
bucket
INNER JOIN vpc ON bucket.region = vpc.region
WHERE
NOT EXISTS (
SELECT
id
FROM
endpoint_gateway
WHERE
endpoint_gateway.region = bucket.region
AND endpoint_gateway.vpc_id = vpc.id
)
-- Preview the changes
SELECT
*
FROM
iasql_preview ();
-- Commit the changes
-- SELECT * FROM iasql_commit();
-- Rollback changes
-- SELECT * FROM iasql_rollback();
آزمایش نتیجه
هنگامی که تمام نقاط پایانی مربوطه ایجاد شدند، می توانید دسترسی خود به نقاط پایانی دروازه را از یک نمونه EC2 داخلی در همان منطقه ای که می خواهید آزمایش کنید، تأیید کنید:
برای نقاط پایانی رابط، دسترسی نیز می تواند با استفاده از نقطه پایانی نامگذاری شده آزمایش شود.