Amazon Web Services AWS IAM – Identity Access Management Servisi
AWS Identity and Access Management (IAM), AWS hizmetlerinize ve kaynaklarınıza erişimi ve ilgili izinleri denetlemenizi sağlar. IAM sayesinde, kullanıcılarınıza ve uygulamalarınıza verdiğiniz izinleri yönetebilir, bir AWS hesabına erişimi yönetmek için kimlik federasyonundan yararlanabilir ve kaynaklara ve hizmetlere erişimi analiz edebilirsiniz.
IAM servisi AWS’in merkezinde bulunan global bir servistir. Regionlardan bağımsız olarak çalışır yani yaptığınız tüm tanımlamalar her region için geçerli olur.
IAM servisinde tüm kimlik ve erişim objelerini oluşturabiliyoruz. Bu objeleri sıralmak gerekirse
- IAM Users: AWS bağlanıp işlem yapabilecek kullanıcıları oluşturmamızı sağlar.
ROOT Account
- AWS hesabı ilk oluşturulduğunda oluşturulur.
- AWS’de ki en yetkili hesaptır.
- Gündelik işlerde kullanılmaz.
- Sadece IAM user oluşturmak için kullanılır.
- IAM Groups : Birden fazla kullanıcıya tek seferde yetki atamamızı sağlayan objelerdir. Örneğin şirketimizde 10 tane IT personeli var ve bunların hepsine admin yetkisi verilmesi gerekiyor bu durumda her kullanıcıya tek tek admin yetkisi vermektense oluşturacağımız IT Grubuna admin yetkisi vererek kullanıcıları bu guruba dahil ederiz.
- IAM Policy : AWS dünyasında kimin, nereye, hangi yetkiyle erişebileceğini berlilememizi sağlayan izin dosyalarıdır. Örneğin S3 servisiden dosya okuması için bir policy oluşturabilir ve bu policy ile gruplara ve kullanıcılara yetki verebiliriz. AWS dünyasında iki çeşit policy vadır. Birisi kendi yarattığımız ve izinleri kendimizin belirlediği policyler diğeri de AWS’in bizim için hazırladığı kullanıma hazır policyler.
- IAM Role : AWS kaynaklarımıza başka AWS kaynaklarının yada diğer AWS kaynaklarından gelen kullanıcıların yada dış düyadaki bir kimlik sağlayıcıyla kurduğumuz güven ilişkisi sonucunda sistemimize erişme yetkisine sahip olacak hesapların nerelere hangi yetkilerle erişebileceğini belirlediğimiz yetkilendirme sistemidir.
Roller temelde iki ana bileşen içerir. İlk olarak rol yaratılırken bu rolün kim tarafından kullanılabileceği yani bu rolün nereye atanabileceği belirlenir. İkinci olarakta bu rolün atanacağı güvenelir kaynağın hangi yetkilere sahip olacağı belirlenir. Bu ikinci kısım policy dosyalarıyla gerçekleştirilir.
IAM Özetle ;
- AWS’in merkezi hesap yönetim servisidir.
- Tüm hesap ayarları bu servis aracılığıyla yönetilir.
- User, Group, Role ve Policy oluşturup yönetmemizi sağlar.
- Kullanıcıların şifre kriterleri,kısıtları ve 2FA ( multi faktör doğrulama) ayaları IAM aracılığıyla yapılır.
- Dış kimlik doğrulama mekanizmalarıyla örneğin MS Active Directory kurulacak bağlantılar IAM üstünden yönetilir.
IAM UYGULAMA
IAM konsola ilk giriş yaptığımızda IAM users sign-in-link kısmında AWS ID-mizle oluşturulan konsol bağlandı URL ile karşılaşırız. Bu URL akılda tutulması zor olacağı için Customize seçeneği ile AWS ID’miz yerine benzersiz bir isim vererek kullanıcıların akılda kalıcı bir URL üzerinden erişmelerini sağlarız. Vermiş olduğumuz url ismi AWS üzerinde kullanılmamış bir isim olmalıdır. Kullanılan bir isim vermeniz durumunda bu ismin kullanıldığı uyarısını alacaksınız. Biz “alisahin” olaran Alias beliryerek bağlantı linkimizi düzenliyoruz.
Öncelikle beş adımdan oluşan Security Status ayarlarını yaparak ROOT hesabının güvenliğini sağlamış olacağız ve bu işlemleri yaparken User ve Group objelerini de örneklemiş olacağız.
Activate MFA on your root account: Root hesabımızın güvneliğini artırmak için multi-factor authentication (MFA) aktif hale getirmemiz gerekiyor. Manage MFA seçerek karşımıza gelen ekranda Activate MFA seçeneği ile gerekli ayarları yapabiliriz.
Manage MFA device ekranında 3 seçenekten biri seçilerek MFA sağlanmış olur.
- Virtual MFA Device : Programlar aracılığı ile yapılan MFA’dır. Authy veya GoogleAuthenticatior gibi AWS’nin desteklediği uygulamalar üzerinden yapılır. Biz bu seçenği aktif hale getireceğiz.
- U2F Security Key: Yubikey gibi anahtarlarla( key ) MFA devreye alınabilir.
- Other Hardware MFA Device : Token üreden bir donanımla MFA devreye alınabilir. Kullandığınız donanım belirli süre aralıklarında keyler üreterek bunu kullanmanızı sağlar.
Virtual MFA Device seçeneği seçenerek devam ediyoruz.
Set up virtual MFA device eklarınında list of compatible applications seçeneği ile AWS’nin desteklediği virtual MFA deviceları görebilirsiniz. Biz uygulamamızda Authy kullanacağız. Authy yükledikden sorna Show QR code diyere ekrana gelen QR code Authy ekliyoruz ve bize ürettiği anahtarları MFA code 1 ve MFA code 2 yazarak Assign MFA diyoruz ve MFA etkinletirmiş oluyoruz..
Authy indirdikten sonra Add Account diyerek Show QR code ile görüntülediğimiz QR Code okutarak AWS’yi Authy’e ekliyoruz. Bu işlem sonrasında Authy bize 30 saniye ara ile üretmiş olduğu iki tokenı MFA code 1 ve MFA code 2 yazıyoruz.Dikkat ederseniz token üretilirken root-account-mfa-device@alisahin token is yazdığını görürsünüz. AWS hesabımızın aliasını alisahin olarak değiştirdiğimizi hatırlarsınız. Root hesabımız için böylece MFA devreye almış olduk.
Create individual IAM users: Bağımsız IAM kullanıcıları oluşturarak onlara yalnızca ihtiyaçları olan izinleri vermemiz gerekiyor. Root hesabı AWS kaynaklarına sınırsız erişim sağladığı için AWS Root hesabını AWS ile günlük etkileşim için kullanmamız gerekiyor.
USERS
AWS bağlanıp işlem yapacak kullanıcıları oluştururuz. Add User seçerek ilk kullanıcımızı ekleyelim.
- User name : ali.sahin olaran user name belirledik.
- Access type: Programmatic access seçeneği AWS hizmetlerini API,CLI ve SDK üzerinden erişmemize imkan sağlar burada önemli olan üretilen access key ID ve secret access key kaybetmemektir.AWS Management Console access ise web konsol üzerinden kullanıcının erişmesine izin verir biz burada her iki seçeneğide seçiyoruz. İhtiyaca göre sadece biriside seçilebilir, genel olarak kullanıcılara sadece console access vermek yeterlidir.
- Console password: Autogenerated password seçeneği ile password AWS tarafından rastsal olarak oluşturulur. Custom password ile parolayı biz belirleriz. Parolayı biz belirleyerek devam ediyoruz.
- Require password reset: User hesaba giriş yapıtığında şifreyi IAM password policy uygun bir password ile değiştirmeye zorlar. Bu seçeneği biz kullanmıyoruz çünkü oluşturduğumuz hesap bir admin hesabı olacağı için buna gerek duymuyoruz ancak kullanıcılara hesap oluşturulurken bu seçeneği kullanmak faydalı olacaktır.
Gerekli tanımlar yapıldıktan sonra Next diyerek permissions seçeneklerine gelebiliriz.
Set permissions kısmında karşımıza üç seçenek gelmektedir.
- Add users to group: Oluşturulmuş olan bir yetki grubu varsa kullanıcıyı bu gruba dahil etmek için bu seçenek kullanılır. Örneğin IT bölümünde çalışan 10 kişi olduğunu düşünelim bu kullanıcılara tek tek permission vermektense oluşturulan gruba bu yetki verilerek kullanıcıları bu gruba dahil etmek yönetimsel olarak daha doğru olacaktır. Benzer yetkilere sahip olması gereken kişileri tek bir grup altında toplamak yönetme işinide kolaylaştırır.
- Copy permissions from existing user: Aynı işi yapan başka bir kullanıcı varsa o kullanıcının yetkilerini kopyalamak için bu seçenek kullanılır.
- Attach existing policies directly: AWS’de bulunan policy objelerinden yada kendi oluşturduğumuz policy objelerini kullanarak yetkilendirmeyi gerçekleştirebiliriz. Biz bu seçeneği kullaranarak hazırda bulunan AdministratorAccess policy objesine yetki vereceğiz. Next diyerek 3. atım Tags seçeneklerine gelebiliriz.
Tags (etiketler) : IAM etiketleri, kullanıcılarınıza ekleyebileceğiniz anahtar (key) / değer (value) çiftleridir. Etiketler, e-posta adresi gibi kullanıcı bilgilerini içerebilir veya iş unvanı gibi açıklayıcı olabilir. Etiketleri, bu kullanıcının erişimini düzenlemek, izlemek veya kontrol etmek için kullanabilirsiniz. Biz burada Key olarak Departman, value olarakta Deparmanın adını kullanacağız. Böylece ileride bu değerlere göre sorgulama yapabileceğiz. Bu seçenek opsiyonel herhangi bir tanım yapmadan geçebilirsiniz. Next ile Review seçeneğine geliyoruz.
Review:User tanımlarken yapmış olduğumuz tüm ayalar karşımıza gelmektedir. Herhangi bir sorun yoksa Create user diyerek kullanıcımızı oluşturuyoruz.
User başarılı bir şekilde oluşturulmuş oldu. Burada dikkat edilmesi gereken en önemli konu oluşturduğumuz kullanıcının CVS dosyasını download etmektir. Bu dosyayı indirmediğimiz takdirde secret access key bir daha görememiz mümkün olmayacaktır. Böyle bir durumda yine aynı kullanıcı için secret access key oluşturmak için kullanıcıyı silip tekrar oluşturmamız gerekir. CVS dosyası indirildikten sonra ilgili dosya kullanıcıyla paylaşılır. Kullanıcının AWS’e nasıl login olacağını anlatan bir yönergeyi Send email seçeneği ile gönderebilirsiniz.
Gördüğünüz gibi ali.sahin kullanıcısını oluşturmuş olduk ve kendisi AdministratorAccess yetkisine sahip olduğu için artık Root kullanıcısıyla işlem yapmaya gerek duymayacağız. Dashboard geldiğimizde 3. adımıda tamamladığımız göreceğiz.
GROUPS:
User groups to assing permissions: IAM hesapları ve izinleri basitleştirmek ve yönetmek için grupları kullanmayı öneriyor. Yukarıda da bahsettiğim gibi aynı işi yapan kullanıcılara tek tek yetkilendirme yapmak yerine oluşturulacak bir gruba verilecek yetki ile tüm kullanıcıların bu gruba dahil edilmesi yönetim açısından oldukça avantajlı olacaktır. Sol taraftan Groups seçerek bir grup oluşturalım ve bu gruba AdminstratorAccess yetkisi vererek oluşturduğumuz kullanıcıyı bu gruba dahil edelim.
Create New Group dedikten sonra karşımıza gelen sihirbaz ile grubumuzu oluşturalım. Biz SysAdmin adında bir grup oluşturarak IT Yönetim ekibini bu grup üzerinde yetilendireceğiz. Grup oluştururken ;
- Set Group Name: Grubumuzun adını belirliyoruz biz sistem admini belirtsin diye grup adımızı “SysAdmin” olarak belirledik.
- Attach Policy: SysAdmin grubunu hangi policy objelerine yetkilendireceğimizi belirliyoruz. Burada isterseniz Policy oluşturma seçeneği ile kendi oluşturduğunuz Policy içinde yetkilendirme yapabilirizsiniz. Biz şimdilik AdministratorAccess policy objesi için yetki veriyoruz.
- Review : Yaptığımız tüm tanımları gördüp kontrol ettikten sonra Creat Group diyerek gurubumuzu oluşturuyoruz.
Grup tanımları bittikten sonra Dashboard baktığımızda 4. seçeneğide tamamlamış oluyoruz.
Apply an IAM password policy: IAM oluşturulan kullancılar için güçlü parollar kullanılmasını ve bu parolaların belli periyotlarla yenilenmesini önermektedir. Bizde bir Password Policy belirleyerek kullanıcılara uygulayacağız.Unutmayın AWS bir bulut hizmeti ve burada parola güvenliği son derece önemli olacaktır.
Password Policy belirlemek için sol menüde Account Settingse gerelerek burada “Set password policy” seçiyoruz. Biz 90 gün süreyle geçerli olan, içinde büyük harf, küçük harf,rakam ve alfa nümerik olmayan karakter içeren minimum 8 karakter uzunluğunda bir parola tanımlanması için ayarlamaları yaptık. Save Changes dedikten sonra Dashboarda geri döndüğümüzde tüm Security Statuslarının tanımlandığını göreceğiz. Bu tanımları yaparken IAM’de User,Groups oluşturmayı da anlamış olduk. Role ve Policy konularınıda anlattıktan sorna IAM servisini tamamlamış olacağız.
POLICIES
Policies, IAM içinde yer alan tüm tanımlı AWS policylerini içeriklerini görüntülememizi ve kendi policymizi oluşturmamızı sağlar. Biz AWS’nin S3 ( Simple Storage Service) servisine sadece listeleme ve okuma fonksiyonlarına sahip bir policy oluşturacağız. Böylece bu policy kullancıya atadığımızda S3 içinde sadece dosya listeleme,dosyaları okuma yetkisine sahip olacak ve bunun dışında bir işlem gerçekleştiremeyecek.
Create Policy diyerek policymizi oluşturmaya başlıyoruz. Ekranda gördüğünüz gibi 645 adet policy sonucu görüntülenmiş, bu AWS’de hazır olarak gelen toplam policy sayısını göstermektedir. Dilerseniz tek tek bu policylerin içeriğini görebilir ve JSON formatında tanımlarına ulaşabilirsiniz.
Create policy seçeneğinde IAM bize iki seçenek sunuyor Visual editor ve JSON eğer JSON ile yazmayı biliyorsanız policynizi bu şekilde oluşturabilirsiniz biz Visual editörden devam edeceğiz.
- Service: Policymizde kullanacağımız servisi bu kısımda seçiyoruz. Choose a service dediğimizde AWS’de yer alan servisler listelenir ancak ihtiyacınıza göre arama seçeneği ile doğrudan servise erişebilirsiniz biz S3 yazarak servisimizi seçtik.
- Action: Policyimize seçtiğimiz servis için hangi yetkileri vereceğimizi belirliyoruz. Biz List ve Read yetkisi vereceğiz.
- Resources: Seçtiğimiz servisle ilgili spesifik kaynak seçerek o servisin sadece o kaynağı için yetki tanımlamış oluruz. Biz S3 servisi için All Resources seçeceğiz.
- Request conditions: Bu policye erişim şartları belirleyebiliriz. Burada iki seçenecek karşımıza çıkıyor. MFA required ve Source IP. MFA required bu policye atanan kullanıcıların MFA tanımı yapılmış olması zorunluluğunu koşullar. Source IP ise belirlenen kaynak IP’lerden bu policy erişime izin verilir. Biz uygulamamızda bu iki seçeneğide kullanmadık.
Review Policy: Oluşturmuş olduğumuz policy için bir isim belirliyoruz ve policy tanımlayan bir açıklama yazıyoruz. Açıklama isteğe bağlı ancak tabiki yazılması faydalı olacaktır. Bu tanımlar yapıldıktan sonra Create policy diyerek policyi oluşturuyoruz
Oluşturduğumuz policy görüntülemek için Filter policies seçeneğinden Customer managed seçiyoruz ve oluşturduğumuz policy listelenmiş oluyor. Böylece bu policyi kullanıcılara atıyarak S3 servisi üzerinde sadece liseleme ve okuma yetkisi tanımlamış oluyoruz.
Umarım faydalı bir makale olmuştur, bir sonraki makalemde görüşmek üzere.
Eline sağlık Murat
Teşekkürler Üstad, faydalı olması dileğiyle.