2026-08-20

VPC Endpoint'leri ile Amazon S3 Erişimini Güvenli Yönetmek

V

Birçok kurum, bazılarına yalnızca bir Virtual Private Cloud (VPC) içinde çalışan uygulamalar tarafından erişilmesi gereken birden fazla Amazon S3 klasörüne (bucket) sahiptir. AWS VPC, AWS kaynaklarını izole edilmiş bir sanal ağda başlatmanıza olanak tanır ve geleneksel bir veri merkezinin güvenlik modeliyle AWS'in ölçeklenebilirliğini sunar.

Ancak, VPC içindeki uygulamaların yalnızca belirli S3 klasörlerine erişebilmesini sağlamak karmaşık bir hal alabilir. Farklı VPC'ler üzerinden erişilmesi gereken paylaşımlı veri setleri olduğunda bu zorluk daha da artar.

Bu rehberde, S3 Access Points ve VPC endpoint'lerini birlikte kullanarak Amazon S3'teki paylaşımlı veri setlerine erişimi nasıl güvenli bir şekilde yöneteceğinizi inceleyeceğiz. Sadece VPC erişimine açık (VPC-only) bir Amazon S3 Access Point oluşturacak ve bunu erişimi kontrol etmek için bir VPC endpoint politikasında kullanacağız. Ayrıca, S3 klasör erişimini tamamen VPC'lerle sınırlandırmak için klasör politikalarının (bucket policy) nasıl kullanılacağını da ele alacağız.

Amazon S3 VPC Endpoint'lerini Kullanmak

Amazon S3 için VPC endpoint'leri, bir internet ağ geçidi veya NAT cihazı gerektirmeden S3'e doğrudan, güvenli ve güvenilir bağlantılar sağlayarak erişimi kolaylaştırır.

Erişimi kısıtlamak için bir Amazon S3 VPC endpoint politikasında belirli klasörleri belirtebilirsiniz. Belirli bir S3 klasörüne erişime izin veren örnek bir VPC endpoint politikası şu şekildedir:

{
  "Statement": [
    {
      "Sid": "Access-to-specific-bucket-only",
      "Principal": "*",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::my_secure_bucket",
        "arn:aws:s3:::my_secure_bucket/*"
      ]
    }
  ]
}

Bu yöntem çalışsa da, ölçeklenebilirliği zayıftır. Yeni bir S3 klasörü oluşturulduğunda, ona izin vermek için VPC endpoint politikasını manuel olarak güncellemeniz gerekir. S3 Access Points bu yönetim yükünü ortadan kaldırır.

S3 Access Points Nedir?

S3 Access Points, üzerinden yönlendirilen her istek için özel ağ kontrolleri ve IAM izinleri uygulamak üzere oluşturulmuş benzersiz ana bilgisayar adlarıdır (hostname).

Temel özellikleri şunlardır:

  • Benzersiz bir ana bilgisayar adı ve AWS ARN'si.
  • Özel bir IAM kaynak politikası.
  • Varsayılan olarak etkinleştirilmiş Herkese Açık Erişimi Engelleme (Block Public Access) özelliği.
  • Kullanıcılar, uygulamalar veya klasör içindeki belirli ön ekler için özel IAM izinleri.
  • İstekleri tamamen bir VPC ile sınırlandırma yeteneği.

S3 Access Points ve VPC Endpoint'lerini Birlikte Kullanmak

VPC endpoint politikanızda tek tek klasörleri belirtmek yerine bir Access Point ön eki kullanabilirsiniz. Bu, belirli bir AWS hesabı ve Bölgesi altındaki tüm Access Point'ler için geçerli olur.

VPC endpoint politikanıza şu koşulu ekleyin:

"Condition": {
    "ArnNotLikeIfExists": {
        "s3:DataAccessPointArn": "arn:aws:s3:us-east-1:<Account ID>:accesspoint/*"
    }
}

Bu koşul sayesinde, yeni bir S3 klasörü oluşturulduğunda sadece onun için yeni bir S3 Access Point oluşturmanız yeterlidir. Erişim, VPC endpoint politikasını manuel olarak güncellemeye gerek kalmadan otomatik olarak verilir.

Adım Adım Kurulum Rehberi

Şimdi bir S3 Access Point oluşturalım ve onu bir VPC endpoint ile kullanalım.

Ön Koşullar

  • Bir VPC'ye sahip AWS Hesabı.
  • Özel (private) bir alt ağ (İnternet Ağ Geçidi veya NAT üzerinden internet erişimi olmayan).
  • En az bir Amazon S3 klasörü.

1. Sadece VPC'ye Özel (VPC-Only) Bir Access Point Oluşturun

İlk olarak, yalnızca belirli bir VPC'den erişilebilen bir Access Point oluşturun. Amazon S3, o VPC'den gelmeyen istekleri reddedecektir.

  1. Amazon S3 konsolunda klasörünüze (bucket) gidin.
  2. Access points > Create access point seçeneğine tıklayın.
  3. Access Point için benzersiz bir ad girin.
  4. Network access type (Ağ erişim türü) için Virtual Private Cloud (VPC) seçeneğini işaretleyin.
  5. Block all public access (Tüm herkese açık erişimi engelle) seçeneğini işaretleyin.
  6. Create access point butonuna tıklayın ve ARN'yi not edin.

2. Bir Amazon S3 Gateway Endpoint Oluşturun

Sonrasında, tüm S3 trafiğinin bir VPC Gateway endpoint üzerinden yönlendirildiğinden emin olun.

  1. Amazon VPC konsolunda Endpoints > Create Endpoint menüsüne gidin.
  2. S3 hizmetini arayın ve seçin.
  3. Endpoint için VPC'yi ve alt ağı (subnet) seçin.
  4. Policy altında Custom (Özel) seçeneğini belirleyin ve aşağıdaki politikayı yapıştırın (<Account ID> kısmını kendi hesap ID'niz ile değiştirin):
{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Sid": "AllowUseOfS3",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": "*"
        },
        {
            "Sid": "OnlyIfAccessedViaAccessPoints",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": "*",
            "Condition": {
                "ArnNotLikeIfExists": {
                    "s3:DataAccessPointArn": "arn:aws:s3:us-east-1:<Account ID>:accesspoint/*"
                }
            }
        }
    ]
}
  1. Create Endpoint butonuna tıklayın.

S3 Klasör Erişimini Yalnızca VPC ile Sınırlandırmak

Bir S3 klasörünün yalnızca bir VPC içinden erişilebilir olmasını garanti etmek için bir klasör politikası (bucket policy) uygulayabilirsiniz.

  1. S3 klasörünün Permissions (İzinler) sekmesine gidin ve Bucket Policy'ye tıklayın.
  2. Aşağıdaki politikayı yapıştırın (<bucket name> ve <vpc id> kısımlarını kendi bilgilerinizle değiştirin):
{
    "Version": "2012-10-17",
    "Id": "S3BukcetPolicyVPCAccessOnly",
    "Statement": [
        {
            "Sid": "DenyIfNotFromAllowedVPC",
            "Effect": "Deny",
            "Principal": "*",
            "Action": [
                "s3:GetObject",
                "s3:ListBucket",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::<bucket name>",
                "arn:aws:s3:::<bucket name>/*"
            ],
            "Condition": {
                "StringNotEquals": {
                    "aws:SourceVpc": "<vpc id>"
                }
            }
        }
    ]
}

SCP ile Yalnızca VPC Access Point'lerini Zorunlu Kılmak

Kuruluşunuzdaki tüm yeni Access Point'lerin yalnızca VPC (VPC-only) olmasını zorunlu kılmak için bir Hizmet Kontrol Politikası (Service Control Policy - SCP) kullanabilirsiniz. Bu, verilerinizi kuruluş genelinde özel ağlarla sınırlar.

{
	"Version": "2012-10-17",
	"Statement": [
		{
			"Sid": "Statement1",
			"Effect": "Deny",
			"Action": [
				"s3:CreateAccessPoint"
			],
			"Resource": [
				"*"
			],
			"Condition": {
				"StringNotEqualsIfExists": {
					"s3:AccessPointNetworkOrigin": [
						"vpc"
					]
				}
			}
		}
	]
}

CloudFormation ile Otomasyon

Tutarlı dağıtımlar için, AWS CloudFormation kullanarak S3 Access Point oluşturma sürecini otomatikleştirebilirsiniz. Bir şablon (template), S3 Access Point'leri birden fazla hesap ve Bölgede uygun ölçekte tanımlamanıza, güncellemenize ve dağıtmanıza olanak tanır.

Sonuç

Özellikle sıkı ağ sınırlarını zorunlu kılarken, paylaşımlı S3 veri setleri için büyük ölçekte veri erişimini yönetmek zor olabilir. S3 Access Points'i VPC endpoint'leri ile birleştirerek, çok kiracılı (multi-tenant) S3 klasörlerinin güvende kalmasını sağlarken izin yönetimini basitleştirebilirsiniz. Bu mimari kolayca ölçeklenir ve hassas verilerinizi korurken manuel müdahale ihtiyacını en aza indirir.