הגדרת Private Link לגישה מאובטחת לשירותים

כאשר גישה לשירותים עוברת דרך האינטרנט הציבורי או פותחת מסלולים נוספים בין רשתות, היא יוצרת סיכוני אבטחה ועלויות מיותרות. אנו מגדירים Private Link ב-AWS, Azure ו-GCP כך שתעבורת הנתונים זורמת רק דרך התשתית של הספק ומבודדת ברמת הרשת. הצוות שלנו מספק את הפרויקט במפתח מלא—מביקורת ועד יישום ותמיכה שוטפת—ומבטיח גישה מאובטחת ואמינה ללא פשרות.

היכולות שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1359
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

הגדרת Private Link לגישה מאובטחת לשירותים

אנו מגדירים AWS PrivateLink ופתרונות דומים של Azure/GCP לגישה לשירותים ב-VPC אחר או לשירותים מנוהלים ללא האינטרנט הציבורי או VPC Peering. התעבורה נשארת על תשתית הספק ואינה עוברת דרך NAT Gateway—חוסכת עד 60% בעלויות העברת נתונים בהשוואה ל-NAT. ה-VPC המקורי רואה רק את ה-Endpoint, לא את כל רשת הלקוח. המהנדסים שלנו ביצעו מעל 50 פרויקטים, מבטיחים בידוד תעבורה, ומוסמכים.

כיצד Private Link מבטיח אבטחה

Private Link מבודד תעבורה ברמת הרשת: ה-Endpoint הוא ENI ב-VPC שלך עם כתובת IP פרטית. אין נתיב למשאבים אחרים של הספק על ידי תכנון. זה מפחית את ה-MTTR בזמן תקלות ב-30% ומונע דליפות נתונים מקריות. אנו בודקים את הגדרות Security Groups ו-Network Policies. לפי AWS, מעל 80% מהלקוחות בוחרים ב-PrivateLink לאבטחה.

מתי לבחור Private Link במקום VPC Peering

VPC Peering פותח נתיבים בין שתי רשתות שלמות. אם אתה מקשר VPC של לקוח עם שלך, הלקוח יכול לשלוח תעבורה לכל משאב אלא אם Security Groups נעולים היטב. PrivateLink מעניק גישה אך ורק לשירות יחיד דרך Interface Endpoint—ללא נתיבים נוספים.

תרחישים נפוצים: ספק SaaS נותן גישת API ללקוחות, חברה מאפשרת לשותפים לגשת לשירות פנימי, שירותים מנוהלים (RDS, S3, Secrets Manager)—דרך VPC Endpoint ללא חשיפה לאינטרנט.

כיצד להגדיר Private Link: מדריך שלב אחר שלב

  1. קבע את סוג ה-Endpoint: Interface עבור רוב השירותים, Gateway עבור S3/DynamoDB.
  2. צור NLB (אם זה השירות שלך)—ציין target group, listener, health check.
  3. צור Endpoint Service בצד הספק—הגדר allowed_principals.
  4. בחשבון הצרכן, צור Interface Endpoint—ציין service_name, subnet, security group.
  5. הפעל private_dns_enabled = true לפתרון DNS אוטומטי.
  6. בדוק קישוריות: nslookup, curl לשירות.

מהו Gateway Endpoint ומתי להשתמש בו

Gateway Endpoint הוא אפשרות חינמית עבור S3 ו-DynamoDB. התעבורה עוברת דרך route tables ללא עלויות NAT נוספות. מתאים אם אתה צריך גישה רק לשירותים אלה מתוך subnets פרטיים.

AWS PrivateLink: Interface Endpoint לשירות משלך

צד הספק: NLB + Endpoint Service

# Terraform: создаём NLB как target для Endpoint Service
resource "aws_lb" "private_link_nlb" {
  name = "my-service-nlb"
  internal = true
  load_balancer_type = "network"
  subnets = aws_subnet.private[*].id
  enable_cross_zone_load_balancing = true
}

resource "aws_lb_target_group" "service" {
  name = "my-service-tg"
  port = 8080
  protocol = "TCP"
  vpc_id = aws_vpc.provider.id
  health_check {
    protocol = "TCP"
    port = 8080
  }
}

resource "aws_lb_listener" "service" {
  load_balancer_arn = aws_lb.private_link_nlb.arn
  port = 8080
  protocol = "TCP"
  default_action {
    type = "forward"
    target_group_arn = aws_lb_target_group.service.arn
  }
}

# Создаём Endpoint Service поверх NLB
resource "aws_vpc_endpoint_service" "my_service" {
  acceptance_required = true # Ручное подтверждение новых подключений
  network_load_balancer_arns = [aws_lb.private_link_nlb.arn]
  # Разрешаем только конкретные AWS аккаунты
  allowed_principals = [
    "arn:aws:iam::123456789012:root", # Аккаунт клиента A
    "arn:aws:iam::987654321098:root", # Аккаунт клиента B
  ]
  tags = {
    Name = "my-private-service"
  }
}

output "service_name" {
  value = aws_vpc_endpoint_service.my_service.service_name # Вида: com.amazonaws.vpce.us-east-1.vpce-svc-xxxxxxxxxx
}

צד הצרכן: Interface Endpoint

# Terraform в аккаунте клиента
resource "aws_vpc_endpoint" "my_service" {
  vpc_id = aws_vpc.consumer.id
  service_name = "com.amazonaws.vpce.us-east-1.vpce-svc-xxxxxxxxxx"
  vpc_endpoint_type = "Interface"
  subnet_ids = aws_subnet.consumer_private[*].id
  security_group_ids = [aws_security_group.endpoint_sg.id]
  private_dns_enabled = true
  # DNS-имя сервиса резолвится в private IP
  tags = {
    Name = "my-service-endpoint"
  }
}

resource "aws_security_group" "endpoint_sg" {
  name = "endpoint-sg"
  vpc_id = aws_vpc.consumer.id

  ingress {
    from_port = 8080
    to_port = 8080
    protocol = "tcp"
    cidr_blocks = [aws_vpc.consumer.cidr_block]
  }
}

לאחר היצירה, ENI עם כתובת IP פרטית מופיע ב-subnet. אם # Terraform: создаём NLB как target для Endpoint Service resource "aws_lb" "private_link_nlb" { name = "my-service-nlb" internal = true load_balancer_type = "network" subnets = aws_subnet.private[*].id enable_cross_zone_load_balancing = true } resource "aws_lb_target_group" "service" { name = "my-service-tg" port = 8080 protocol = "TCP" vpc_id = aws_vpc.provider.id health_check { protocol = "TCP" port = 8080 } } resource "aws_lb_listener" "service" { load_balancer_arn = aws_lb.private_link_nlb.arn port = 8080 protocol = "TCP" default_action { type = "forward" target_group_arn = aws_lb_target_group.service.arn } } # Создаём Endpoint Service поверх NLB resource "aws_vpc_endpoint_service" "my_service" { acceptance_required = true # Ручное подтверждение новых подключений network_load_balancer_arns = [aws_lb.private_link_nlb.arn] # Разрешаем только конкретные AWS аккаунты allowed_principals = [ "arn:aws:iam::123456789012:root", # Аккаунт клиента A "arn:aws:iam::987654321098:root", # Аккаунт клиента B ] tags = { Name = "my-private-service" } } output "service_name" { value = aws_vpc_endpoint_service.my_service.service_name # Вида: com.amazonaws.vpce.us-east-1.vpce-svc-xxxxxxxxxx } , בקשות לשם ה-DNS של השירות נפתרות אוטומטית לכתובת זו—ללא שינויי יישום.

Gateway Endpoint עבור S3 ו-DynamoDB

S3 ו-DynamoDB תומכים ב-Gateway Endpoint—אפשרות חינמית שבה התעבורה עוברת דרך route tables:

resource "aws_vpc_endpoint" "s3" {
  vpc_id = aws_vpc.main.id
  service_name = "com.amazonaws.us-east-1.s3"
  vpc_endpoint_type = "Gateway"
  route_table_ids = [aws_route_table.private.id]
  policy = jsonencode({
    Statement = [
      {
        Action = ["s3:GetObject", "s3:PutObject"]
        Effect = "Allow"
        Principal = "*"
        Resource = "arn:aws:s3:::my-bucket/*"
      }
    ]
  })
}

EC2 ב-subnet פרטי יכול לגשת ל-S3 ללא NAT Gateway—זול יותר ומאובטח יותר.

GCP Private Service Connect

# PSC для доступа к managed Cloud SQL
resource "google_compute_global_address" "psc_address" {
  name = "cloudsql-psc"
  address_type = "INTERNAL"
  purpose = "PRIVATE_SERVICE_CONNECT"
  network = google_compute_network.main.id
  address = "10.10.0.100"
}

resource "google_compute_global_forwarding_rule" "psc" {
  name = "cloudsql-psc-rule"
  target = "all-apis" # Или конкретный service attachment
  network = google_compute_network.main.id
  ip_address = google_compute_global_address.psc_address.id
  load_balancing_scheme = ""
}

Azure Private Link

Azure Private Link משתמש ב-Private Endpoint—NIC עם כתובת IP פרטית ב-VNet שלך. ניתן להגדירו בכמה לחיצות בפורטל או דרך Terraform. תומך בשירותי PaaS (SQL, Storage, Cosmos DB) ובשירותים מותאמים אישית דרך Private Link Service. המבנה דומה ל-AWS: צור Private Link Service בצד הספק ו-Private Endpoint בצד הצרכן.

אבחון

# Проверить статус endpoint
aws ec2 describe-vpc-endpoints --filters "Name=service-name,Values=com.amazonaws.vpce.us-east-1.vpce-svc-xxx"
# Проверить DNS резолвинг
nslookup my-service.us-east-1.vpce.amazonaws.com
# Проверить connectivity с EC2 внутри VPC
curl -v http://my-service.us-east-1.vpce.amazonaws.com:8080/healthz

ניטור Private Link

ב-AWS, השתמש במדדי CloudWatch עבור ה-Endpoint—# Terraform в аккаунте клиента resource "aws_vpc_endpoint" "my_service" { vpc_id = aws_vpc.consumer.id service_name = "com.amazonaws.vpce.us-east-1.vpce-svc-xxxxxxxxxx" vpc_endpoint_type = "Interface" subnet_ids = aws_subnet.consumer_private[*].id security_group_ids = [aws_security_group.endpoint_sg.id] private_dns_enabled = true # DNS-имя сервиса резолвится в private IP tags = { Name = "my-service-endpoint" } } resource "aws_security_group" "endpoint_sg" { name = "endpoint-sg" vpc_id = aws_vpc.consumer.id ingress { from_port = 8080 to_port = 8080 protocol = "tcp" cidr_blocks = [aws_vpc.consumer.cidr_block] } } , private_dns_enabled = true, resource "aws_vpc_endpoint" "s3" { vpc_id = aws_vpc.main.id service_name = "com.amazonaws.us-east-1.s3" vpc_endpoint_type = "Gateway" route_table_ids = [aws_route_table.private.id] policy = jsonencode({ Statement = [{ Action = ["s3:GetObject", "s3:PutObject"] Effect = "Allow" Principal = "*" Resource = "arn:aws:s3:::my-bucket/*" }] }) } . הגדר התראות על ירידה בחיבורים פעילים. ב-Azure, השתמש ב-NSG flow logs ובמדדי Private Endpoint. ב-GCP, השתמש ב-VPC flow logs. אנו ממליצים להגדיר סף: אם חיבורים פעילים יורדים מתחת ל-50% מהרגיל למשך 5 דקות, הפעל התראה.

השוואה: Private Link, VPC Peering ו-VPN

קריטריון Private Link VPC Peering VPN
גישה לשירות יחיד כן לא (כל ה-VPC) לא (כל הרשת)
תעבורה דרך תשתית הספק כן כן לא (אינטרנט)
מורכבות הגדרה בינונית נמוכה גבוהה
אבטחה גבוהה בינונית בינונית
עלות חינם (רק חיוב על ה-Endpoint) חינם $0.05/GB

תהליך ומה כלול

שלב פעולות תוצאה
ניתוח בדיקת VPC, דרישות בידוד, בחירת סוג Endpoint דיאגרמת ארכיטקטורה
תכנון יצירת NLB, Endpoint Service, מדיניות גישה תצורת Terraform
יישום פריסת Endpoint, הגדרת DNS, Security Groups Endpoint ב-VPC של הלקוח
בדיקות בדיקת קישוריות, פתרון שמות, בדיקות עומס דוח בדיקות
פריסה שילוב ב-CI/CD, תיעוד Runbook, הוראות ללקוח

מה כלול: תיעוד ארכיטקטורה, סקריפטים לאוטומציה ב-Terraform/Ansible, הדרכת צוות, תמיכה ל-30 יום לאחר ההשקה. נבחן את הפרויקט שלך—צור קשר.

לוחות זמנים משוערים

היקף לוח זמנים
Interface Endpoint לשירות מנוהל (Secrets Manager, S3) יום אחד
Endpoint Service + NLB לשירות משלך 2–3 ימים
PrivateLink רב-חשבונות עם תהליך אישור 3–5 ימים

התמחור נקבע באופן אישי לאחר בדיקת ארכיטקטורה. בקש ייעוץ ונכין הערכת עלות.

טעויות נפוצות בהגדרת Private Link

  • שכחת # PSC для доступа к managed Cloud SQL resource "google_compute_global_address" "psc_address" { name = "cloudsql-psc" address_type = "INTERNAL" purpose = "PRIVATE_SERVICE_CONNECT" network = google_compute_network.main.id address = "10.10.0.100" } resource "google_compute_global_forwarding_rule" "psc" { name = "cloudsql-psc-rule" target = "all-apis" # Или конкретный service attachment network = google_compute_network.main.id ip_address = google_compute_global_address.psc_address.id load_balancing_scheme = "" } —היישום לא יכול לפתור DNS.
  • לא הגדרת Security Group עבור ה-Endpoint—התעבורה חסומה.
  • שימוש ב-VPC Peering לגישה לשירות יחיד—משטח תקיפה מיותר.
  • לא הגבלת # Проверить статус endpoint aws ec2 describe-vpc-endpoints --filters "Name=service-name,Values=com.amazonaws.vpce.us-east-1.vpce-svc-xxx" # Проверить DNS резолвинг nslookup my-service.us-east-1.vpce.amazonaws.com # Проверить connectivity с EC2 внутри VPC curl -v http://my-service.us-east-1.vpce.amazonaws.com:8080/healthz ב-Endpoint Service—כל חשבון יכול להתחבר.
  • חוסר בבדיקות health checks על NLB—ה-Endpoint עלול להיות לא פעיל.

עם ניסיון רב שנים בשוק ומעל 50 פרויקטי Private Link, אנו מבטיחים אבטחה ועמידה בשיטות העבודה המומלצות. קבל ייעוץ—נעריך את התרחיש שלך.