Kuruluşlar genellikle müşterileri/tedarikçileri gibi dış varlıklara dosya aktarmak için güvenli bir yola ihtiyaç duyarlar. Bunu çözen 3rd party servisler olsa da, dosyalarınızın farklı bir platform üzerinden paylaşılması genelde bir güvenlik açığı oluşturur. Ya da kendi veri merkezlerinde yine farklı uygulamalar kurmak ve barındırma zorunluluğu doğar. Tüm bu senaryoları değerlendirdiğimizde AWS S3 üzerinden bu servisi vermek güvenli ve stabil hale geliyor. Bu makalede hem S3, hem AWS Transfer Family hem de IAM konularına değinip ilgili servisi kuracağız.
Şuanda şirketler arası dosya paylaşımı için genelde SFTP kullanılmakta ama bu servisi içeride konumlandırmak ve kullanmak çeşitli güvenlik risklerini de beraberinde getirebiliyor. Bu yazıda hem ilgili AWS servislerine ( S3, IAM, TF ) kısaca bakmak hem de bir senaryo üzerinden bu servisi nasıl kurarız bunları incelemek istiyorum.
Neden AWS Transfer Family?
AWS Transfer Family, SFTP protokolünü kullanarak ortaklarınız, satıcılarınız ve müşterileriniz arasında Amazon S3’e ve Amazon S3’ten dışarıya hızlı ve güvenli bir şekilde dosya aktarımı yapmak için SFTP, FTPS ve FTP’yi destekleyen yönetilen bir hizmettir.
Avantajlar:
Güvenlik: Güvenlik standartlarına tam uyum.
Ölçeklenebilirlik: Veri alanı ihtiyaçlarınıza göre ölçeklenir.
Maliyet Etkinliği: Kullandıkça öde fiyatlandırma modeli.
Bu makalede, sftp sunucunuz için bir server end point, Ağ yapılandırması, kullanıcılar ve bucket nasıl kurulur bunu öğreneceğiz.
S3 ve VPC Endpoint Kurulum :
Adım 1: Bir S3 Bucket Oluşturma:
Öncelikle bir S3 bucket oluşturarak başlayalım, bunu S3 konsoluna gidip “Create Bucket”a tıklayarak yapabiliriz, ardından benzersiz bir bucket name veriyoruz. Oluşturmayı sonlandırmadan önce bölge ve izinler gibi istenen ayarları yapılandıralım.
Artık bir bucket oluşturduk. Şimdi bu bucket ‘a ( klasör ağacı/düğümü/kovası) iki klasör oluşturmak istiyoruz, oluşturduğumuz bucket’ı açalım ve “Create Folder”a diyelim. İlk klasöre istediğiniz adı verebilirsiniz, ardından ikinci klasör için işlemi tekrarlayın, her ikisinin de bucket içinde düzgün bir şekilde yapılandırıldığından emin olalım.
2.Adım 2: Erişim ve Güvenliği Yönetme:
Artık dosyalarımızı depolamak için bucket oluşturduk ve içine klasörlerimizi açtık, bir sonraki adım SFTP sunucusundan s3 bucketa erişimi ve güvenliği yönetmek. bunu yapmak için önce IAM politikasını oluşturmamız ve s3 bucket erişimi kontrol etmek için yeni oluşturulan bir IAM rolüne bağlanmamız gerekiyor. Ayrıca, vpc uç noktası aracılığıyla bu sftp sunucusuna ssh ile bağlanmak için kullanılacak bir ssh anahtar key pair’e ihtiyacımız var, bunu aşağıdaki adımları izleyerek yapabiliriz.
Bir IAM Politikası ve Rolü Oluşturalım:
Daha önce oluşturulmuş S3 bucket’a erişim izni veren bir IAM politikası oluşturmak için IAM konsoluna gidelim ve “Creat Rule”u seçelim. Politikanın JSON’unda S3 bucket ARN’sini belirtelim ve gerektiği gibi s3:GetObject ve s3:PutObject gibi izinler verelim. Aşağıda bir json politika şablonu bulabilirsiniz.
JSON :
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::sftp-project-bucket7899"
},
{
"Sid": "Statement2",
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": "arn:aws:s3:::sftp-project-bucket7899/*"
}
]
}
Kullanılacak bir IAM rolü oluşturmak için, IAM konsol rolü bölümüne gidelim ve “Create Role”ü seçelim. Kullanacağımız güvenilir varlık “AWS Service” olacaktır çünkü bu rolü, transfer ailesi olan bir aws hizmetine atamaya çalışıyoruz.
Rol oluşturulduktan sonra, izinler adımında avaliable policies listesinden seçerek daha önce oluşturulan IAM politikasını eklemek istiyoruz.
Adım 3: Vpc End Point için bir Ağ Yapılandırması oluşturalım:
Şimdiye kadar bir s3 bucket, IAM rolü ve politikası yapılandırdık. Bu adımda, sftp sunucusuna erişebilen IP adreslerini kısıtlamak/beyaz listeye almak için kullanılacak bir ağ yapılandırması oluşturmak istiyoruz, bunu bir vpc endpoint kullanarak yapabiliriz, ancak bir vpc endpoint yapılandırmak için öncelikle kullanıcıların uç noktadan geçmesi için uygun ağ yapılandırmalarına ihtiyacımız var, bir vpc ve diğer ağ bağımlılıkları oluşturarak başlayabiliriz, bunu yapmak için aşağıdaki adımları izleyelim:
Bir vpc network oluşturalım (vpc endpoint olmadan )
İlk olarak bir VPC oluşturarak başlayalım. Bu VPC, trafik yönetimi için gerekli alt ağları, internet ağ geçidini ve route table’ları içerecektir. VPC içinde, public ve private subnet oluşturalım. Bu proje için 1 avaliable zone kullanacağım.
Alt ağlar oluşturulduktan sonra, internet erişimini kolaylaştırmak için VPC’ye bir İnternet GateWay (IGW) ekleyeceğim. İnternet ağ geçidi (IGW) eklendiğinde, tüm trafiği (0.0.0.0/0) IGW üzerinden yönlendiren ve VPC içindeki hizmetler için harici bağlantı sağlayan bir route table yapılandıracağım. Ancak kullanıcılar ve sunucu aws içinde olduğundan, sunucuya erişmek için private subnet de kullanabilirsiniz.
VPC Endpoint tarafından kullanılacak bir Security Group Oluşturalım:
VPC uç noktası için bir güvenlik grubu oluşturmak istiyoruz, bunu VPC konsoluna giderek, “Security Groups” seçerek ve “Create Security Groups”a tıklayarak yapabiliriz. Gelen ve giden kuralları, seçtiğimiz özel IP adresinde belirli trafiğe (22 numaralı bağlantı noktasında SFTP) izin verecek şekilde yapılandıracağız ve bunu VPC ile ilişkilendireceğiz
Not: varsayılan güvenlik grubunu kullanmaktansa, kendi güvenlik grubunuzu oluşturmayı tercih edin
VPC Endpoint tarafından kullanılacak bir Elastik IP oluşturalım:
Son olarak ağ yapılandırması tarafında, aynı vpc konsolunda VPC endpoint için bir Elastik IP oluşturuyoruz ve “VPC” bölümünün altında “Elastik IP’ler”i seçiyoruz. “Allocate New Elastic IP”e tıklayalım, bu ip, sftp sunucusunun oluşturulması sırasında vpc enpoint ile ilişkilendirilecektir.
Adım 4: AWS Transfer Family Kuralım:
Son rötuşları yapmanın zamanı geldi. Artık bir VPC Endpoint kullanarak bir sftp sunucusu oluşturmak için gereken tüm gereksinimlere sahip olduğumuza göre, artık AWS SFTP konsoluna gidebilir ve “Create Server”a tıklayabiliriz, sunucuyu yapılandırabilir, kullanmak istediğimiz protokolü seçebiliriz, bu proje için bir sftp sunucusu oluşturuyoruz, “SFTP (SSH Dosya Aktarım Protokolü)”nı seçebiliriz.
Daha sonra bir kimlik sağlayıcı seçmek istiyoruz, AWS içindeki transfer ailesini kullanarak bir kullanıcı oluşturup yönettiğimiz için “Service Managed”i seçiyoruz.
Kimlik sağlayıcısını seçtikten sonra, bir endpoint seçeceğiz, daha önce oluşturduğumuz ağ bağımlılıklarını kullanarak endpoint yapılandırdığımız için “vpc hosted” seçeneğini seçiyoruz.
vpc’mizin genel alt ağını kullanan “internet facing” erişimini seçebilir ve “internal” için özel alt ağı kullanabilir.
3. adımda oluşturduğumuz vpc kimliğini ve güvenlik grubu kimliğini seçin ve sonraki’ye tıklayın
domain (aws storage service ) için “amazon s3“ü seçin; yapılandırılmışsa alternatif olarak elastik bir dosya sistemi kullanabiliriz (kapsam dışı)
son olarak sftp sunucu aktivitelerinden logları almak için yeni bir log grubu oluşturuyoruz, diğer her şeyi varsayılan olarak bırakarak, ardından sunucuyu inceleyin ve oluşturun
Server oluşturma birkaç dakika sürebilir ( ortalama 3-5dk )
Sunucumuz oluşturulduktan sonra yeni bir kullanıcı oluşturalım, S3 bucket’a erişim izni vermek için daha önce oluşturulan IAM politikasını ve rolünü eklemek istiyoruz. Kullanıcının ana dizinini S3 bucket içinde ayarlayalım, uygun klasör izinlerini yapılandırarak belirli klasörlerine erişimi kısıtlayalım. Son olarak, güvenli bir şekilde kimlik doğrulaması yapmak ve dosya transferlerine izin vermek için kullanıcının SFTP erişimi için genel anahtarını ekleyelim.
Adım 4: Test:
Kullanıcımızın başarıyla oluşturulduğunu görebiliyoruz, şimdi SFTP sunucusunu test etme zamanı…
WinSCP yazılımını indirerek SFTP alanımızı test edelim.
oluşturduğumuz kullanıcı ile bağlandığımızda , kullanıcıların sadece ilgili dizine erişebildiğini ve dizinler arası gezemediğini farkedeceksiniz.