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ポリシーのテスト
リソースベースのポリシー
S3バケット、SQSのキューなどAWSリソースに対してもポリシーの設定が可能
ユースケース|AWSアカウントを超えたアクセスの許可
{
"Statement": {
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::AccountBの番号:root"
},
"Action": "s3:*",
"Resouce": "arn:aws:s3:::mybucket/*"
}