AWS
IAM
ソリューションアーキテクト
More than 3 years have passed since last update.

IAMは無料。使い放題。

AWSユーザーの認証とアクセスポリシーを管理する。

AWS Black Belt Techシリーズ AWS IAM


AWSの操作をグループ、ユーザー、ロールといった単位で管理出来る

‘IAM構成例’

管理者 AWSアカウント 全操作可能

開発者 IAMユーザーorグループ S3に関する全ての操作が可能

運用者 ロール S3参照のみ期間限定で可能


IAMユーザー


  • 最大5000ユーザー

  • ユーザー名、(オプションで)パス、所属グループ、パーミッション(AWSリソースのアクセス権限)が設定可能


IAM グループ


  • 最大100グループ

  • グループ名、(オプション)パス、パーミッション(AWSリソースのアクセス権限)が設定可能


IAMで利用される認証情報


  • アクセスキーID/シークレットアクセスキー(REST、Query形式のAPIで利用)

    コンソールから生成出来る。Active/Inactiveが切り替えできる。


  • X.509Certificate(SOAP形式のAPIで利用)

    OpenSSLなどで作った証明書をアップロードする。


  • AWSコンソールのログインパスワード

    デフォルトは未設定。128文字までのBasicな認証。パスワード変更時のポリシーが設定できる。

    IAMユーザーは専用のURLからコンソールにアクセスする。URLはデフォルトではアカウント名を付け足したもの。


  • MFA(多要素認証)

    ハードウェアもしくは仮想MFAを利用。



IAMポリシーの記述

例)アクセス元が176.32.92.49ならば、S3のListBucketsとGetの操作を許可する

{

"Effect": "Allow",
"Action": [
"s3:ListBuckets",
"s3:Get *"
],
"Resouce":[
"arn:aws:s3:::mybucket"
],
"Condition": {
"IpAdress": {
"aws:SouceIP":["176.32.92.49/32"]
}
}
}

※指定したもの以外を許可する場合は"NotAction"、"NotResouce"をつかう

※"Resouce"はARN(AmazonResouceName)を利用 arn:service:region:account:resouce

ARN詳細(Amazon Resource Names (ARNs) and AWS Service Namespaces - Amazon Web Services

※Resouceに対するActionの許可の条件判定を"Condition"で行う


Conditionの書き方

    "Condition": {

"IpAdress": {
"aws:SouceIP":["176.32.92.49/32"]
}
}

演算子:{ポリシー変数:条件値}

演算子


  • 文字列

  • 数値

  • 日付・時間

  • ブール値

  • IPアドレス

  • AWSリソース

  • IfExists (演算子に付与。変数が無ければ無視される)

  • 条件キーの有無


変数



  • 全てのリクエストで利用可能な変数


    • aws:CurrentTime

    • aws:EpochTime

    • aws:TokenIssueTime

    • aws:principaltype

    • aws:SecureTransport

    • aws:SouceIp

    • aws:UserAgent

    • aws:usename



  • その他AWSサービス固有の変数もある



ConditionのANDとOR

Conditionの下のブロックはAND、演算子に対する値はOR

"Condition": {

"DateGreaterThan": {
"aws:CurrentTime": "2013-07-16T12:00:00Z"
},
"DateLessThan": {
"aws:CurrentTime": "2013-07-16T15:00:00Z"
},
"IpAddress": {
"aws:SouceIp": ["192.168.176.0/24","192.168.143.0/24"]
}
}

「2013/7/16の12:00から15:00の間に、ソース

IP192.168.176.0/24もしくは192.168.143.0/24のネットワークからアクセス

したリクエスト」


サポートと請求画面に対してもアクセスポリシーを指定できる

設定手順


  • ルートアカウントからセキュリティ質問を設定

  • 費用請求画面へのアクセス

  • IAMユーザーに"aws-portal"のアクション追加


アクセス可否のロジック


  • アクセス制御条件は複数指定可能


  • 全てのアクセスはデフォルトで不可
    デフォルトでDeny>>Allow>>条件に"Deny"を明示 この順で適用される


IAMポリシーのテスト

IAM Policy Simulator


リソースベースのポリシー

S3バケット、SQSのキューなどAWSリソースに対してもポリシーの設定が可能


ユースケース|AWSアカウントを超えたアクセスの許可

{

"Statement": {
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::AccountBの番号:root"
},
"Action": "s3:*",
"Resouce": "arn:aws:s3:::mybucket/*"
}