AWS IAM Detayları

Merhaba arkadaşlar, geçen dersimizde bir kısmını anlattığımız AWS IAM servisinin devamı olan IAM detaylarını anlatacağız. IAM AWS üzerindeki kaynaklarınızın kullanıcılar tarafından kullanımını kontrol etmenizı sağlar, IAM servisini kullanarak kullanıcılarınıza yetkilerdirme ve kimlik denetimi kontrollerinı uygulayabilirsiniz.

AWS IAM Detayları
AWS IAM Detayları

AWS IAM Detayları

IAM servisini anlatırken bilmemiz gereken temel kavramlar var; user, group ve role.

IAM Users: 

User AWS’de oluşturduğumuz kullanıcılardır. Kullanıcılar AWS ile iletişim kuran sistemimizde tanımlı bir kişiyi ya da bir servisi ifade edebilir. IAM Users ilk amacı, insanlara AWS yönetim konsoluna giriş yapabilmelerini ve API üzerinden AWS servileri ile konuşmalarını sağlayabilmektir.

IAM Groups:

 Birden fazla IAM user’ından oluşur. Sistemde bulunan birden fazla kişiye kolaylıkla hakların tanımlanmasını ve kullanıcıların daha kolay yönetilmesini sağlar. Örneğin sistemdeki kullanıcılardan birini ‘admin’ kullanıcı grubuna eklediğizde, admin grubuna tanımlanan bütün haklar, eklediğiniz o kullanıcı içinde geçerli olur. Sistemdeki bir kullanıcıya verilen görev değiştiğinde, o kullanıcıya tanımlanan hakların tek tek degiştirilmesindense, kullanıcın sadece grubunu değiştirmek çok daha kolay olacaktır.

IAM Roles:

 IAM role’ü user’a çok benzeyen bir kavramdır. User’dan tek farkı, role’lerin kendilerine ait şifreleri ya da access/secret key’lerinin olmamasıdır. Role’ler user’lar gibi sistemdeki bir kullanıcı diğerlerinden ayırmaktan farklı olarak, birden fazla kullanıcı tarafından üstlenilebilir(assume role). Diğer bir ifadeyle, sisteminizde tanımlı bir “admin” role’ü olduğunu varsayarsak, admin role’ünü üstelenmeye hakkı olan her kullanıcı, o role’ü üstlendiği süre zarfında, sistemde admin haklarına sahip olabilir.

Diger çok önemli bir kavramda yetkilendirme yönetimidir. 

İzinler (Permissions):

Permissions AWS kaynaklari üzerinde hangi kullanıcıların hangi haklara sahip olacaklarını belirlemenizi sağlar. AWS’de yeni oluşturulan kullanıcılar hiçbir hakka sahip olmazlar, buna kendi şifrelerini belirlemekte dahil. Sistemde otomatik olarak tanımlanmış olan veya sizin oluşturacağınız Policy’ileri user’lara, user’ların dahil oldugu gruplara veya user’ların üstlenebileceği role’lere takarak, kullanıcıları yetkilendirebilirsiniz. Aşağıdaki policy, kullanıcıların kendi şifrelerini değiştirmelerini sağlayabilirsiniz.

{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Action": "iam:GetAccountPasswordPolicy",
    "Resource": "*"
   },
   {
     "Effect": "Allow",
     "Action": "iam:ChangePassword",
     "Resource": "arn:aws:iam::1234567890:user/${aws:username}"
    }
   ]
}

Policy dökümanı oluşturan anahtar kelimeler aşağıda kısaca açıklanmıştır.

Version: policy dokümanın versiyonunu belirtir.

Policies: Policy bir veya birden fazla izinlerin tanımladığı bir dokümandır. Aşağıda bir policy’iyi oluşturan elementlerden kısaca bahsedeceğim. Policy oluştururken aşağıdaki verilen sıranın bir önemi yoktur. Biri diğerinden önce veya sonra gelebilir.

Id: Opsiyonal kimlik belirtecidir.

Statement: Policy’nin temel yapı taşıdır. Policy dokümanında bulunması zorunludur ve birden fazla statement bulunabilir ve JSON formatında ifade edilir.  Aşağıdaki örnek statement, Amazon S3 servisinin ‘home’ klasörüne erişim hakkını vermektedir.

{
 "Version": "2012-10-17",
 "Statement": [
   {
     "Effect": "Allow",
     "Action": [
       "s3:ListAllMyBuckets",
       "s3:GetBucketLocation"
     ],
     "Resource": "arn:aws:s3:::*"
   },
   {
     "Effect": "Allow",
     "Action": "s3:ListBucket",
     "Resource": "arn:aws:s3:::BUCKET-NAME",
     "Condition": {"StringLike": {"s3:prefix": [
       "",
       "home/",
       "home/${aws:username}/"
     ]}}
   },
   {
     "Effect": "Allow",
     "Action": "s3:*",
     "Resource": [
       "arn:aws:s3:::BUCKET-NAME/home/${aws:username}",
       "arn:aws:s3:::BUCKET-NAME/home/${aws:username}/*"
     ]
   }
 ]
}

Sid: Opsiyonel statement id.

Effect: Allow ya da Deny değerlerini alır.

Principal: AWS’de tanımlanmış user, assumed-role, account, servislerin kaynaklara hakkı olup olmadığını belirtmek için kullanılır.

Örnek principallar:

AWS bulunan bütün servisleri yetkilendiren principal: 
"Principal" : { 
    "AWS" : "*" 
 }

Sadece belirtilen account’a yetkilendiren principal:

"Principal": { "AWS": "AWS-account-ID" }

Sadece belirtilen accounttaki bir user’ı yetkilendiren principal:

"Principal": { 
     "AWS": "arn:aws:iam::AWS-account-ID:user/user-name" 
}

Sadece belirtilen servisleri yetkilendiren principal:

"Principal": {
   "Service": [
      "ec2.amazonaws.com",
      "datapipeline.amazonaws.com" 
    ]
}

NotPrincipal: NotPrincipal kullanılan principal listesindeki bazı elemanları listeden çıkarmak(exclude) etmek için kullanılır ve yazım kuralları Principal ile aynıdır.  Aşağıdaki örnekte belirtilen accounttaki Bob ve root kullanıcılarının yetkilendirilmeleri engellenmiştir.

"Effect": "Deny",
"NotPrincipal": {
   "AWS": [
     "arn:aws:iam::444455556666:user/Bob",
     "arn:aws:iam::444455556666:root"
   ]
}

Action: İzin verilen ya da verilmeyen aksiyonları ifade eder. Aşağıdaki action, sqs servisinde SendMessage’e aittir.

"Action": "sqs:SendMessage"

Resource: Policy dökumanındaki statement’ların kapsadığı kaynakları ifade eder.

SQS queue’undaki queue1 isimli kaynağı ifade eder

"Resource": "arn:aws:sqs:us-east-2:account-ID:queue1"

Belirtilen accounttaki Bob kullanıcısını ifade eder

"Resource": "arn:aws:iam::account-ID:user/Bob"

Condition: Policy dökumanında koşullar tanımlaya yarar. Büyüktür, küçüktür ve eşittir gibi koşullarla policy dökumanı oluşturulabilir.  Aşagıdaki Condition, şimdiki zamanı belirtilen tarihten büyük olanları kapsamak için kullanılır.

"Condition": {
    "DateGreaterThan" : {
       "aws:CurrentTime" : "2013-12-15T12:00:00Z"
   }
}

Bu dersimizde IAM servisinin çok kullanılan detaylarından bahsetmeye çalıtık, ancak IAM en fazla kullanılan bir AWS servisidir, daha detaylı bilgiler için AWS dökumantasyonuna bakılabilir.

Konu hakkında sorularınızı konu altından ve ya SoruCevap sitemizden sorabilirsiniz.

AWS Derslerimizden IAM kimlikleri dersimizin de sonuna gelmiş bulunuyoruz.

AWS Derslerimize tıklayarak devam edebilirsiniz.

0

Salih Kardan

Bilgisayar Mühendisi, Bilkent Universitesi

1 Yorum

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?