IAMで まもれ僕らの AWS
JAWS-UG 初心者支部
2015/11/27
• 名前:片山 暁雄
• 所属:株式会社ソラコム
– シニアソフトウェアエンジニア
• ID: @c9katayama
#ヤマン
• 元AWSソリューションアーキテクト
(金融担当)
• AWS認定ソリューションアーキテクト
(アソシエイト)
好評発売中!(Kindle版もあるよ!)
IAMとは
AWSインフラを操作するための
「認証」と「認可」のサービス
IAM =
Identity and Access Management
バケット
ユーザー
(コンソール/CLI/SDK) IAM
この人は”ヤマン”です
(認証)
ID/パスワード or
AccessKey/Secret AcccessKey
このバケットへの
PUTはOK
(認可)
ユーザー
• アカウントユーザー(rootユーザー)
• AWSアカウント作成時にできるユーザー
• どのような操作でもできる
• 基本的に利用しない
• IAMユーザー
• IAMで作成されたユーザー
• 付与された権限のみでAWSを操作できる
• コンソールへのログインID/パスワード、および
AccessKey/SecretAccessKeyはIAMユーザーごとに発行可能
よくある勘違い
• IAMユーザーを作ると、EC2へログインできる
• IAMユーザーを作ったので、どのような操作でもできる
• 名前
• AccessKey/SecretAccessKey
• コンソールへのログインパスワード
• MFA
• 権限(IAMポリシー)
IAMユーザー設定項目
MFA(多要素認証)
• ハードウェアタイプ
• ソフトウェアタイプ
• オススメはIIJ SmartKey
• ショートメッセージ(SMS) New!
権限(IAMポリシー)
• IAMユーザーに認可を与えるためのポリシー
• JSON形式
• 2つのポリシー形式
• インラインポリシー
• 管理ポリシー(推奨)
• 一括変更
• バージョン管理
インライン
ポリシー
インライン
ポリシー
管理ポリシー
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1448599027000",
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": [
"*"
]
}
]
}
このポリシーが許可を
するものか、拒否をす
るものか
(Allow or Deny)
許可(拒否)対象のAWS
サービスおよびAPI
詳細なリソース指定
(特定のS3バケットだ
け、など)
{
"Version": "2012-10-17",
"Statement": [ {
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": [
"*"
]
},
{
"Effect": “Deny",
"Action": [
"s3:GetObject"
],
"Resource": [
"*"
]
}
]
}
覚えなくていいです!
ポリシージェネレーター
ポリシーエディター
• ユーザーには複数のポリシーが設定できる
• ポリシーの優先順位で決まる
ポリシーの優先順位
デフォルト Deny < 明示的な Allow < 明示的な Deny
•S3へのフルアクセスを許可するポリシー
•S3へのputを拒否するポリシー
例えば・・・
デフォルト Deny
(デナイ)
• ロール=役割
• IAMユーザーやAWSサービスに、IAMの権限を付与する仕組み
• ロールには、「ロール種別」と「権限(ポリシー)」のみ設定
できる
• ロールを作っても、それだけではキーも発行されない
IAMロール
•AWSサービスロール
•クロスアカウントアクセスロール
•IDプロバイダアクセスロール
IAMロールの種類
AWSサービスロール
•EC2やLambdaなどを起動する時
に付与するロール
•付与したロールの権限を、インス
タンスの中/Lambda Functionから
使用出来る
S3アクセス
ロールなし
ロールあり
AccessKey/SecretAccessKeyの設定が必要
CLIがロール用に発行されたキーを自動取得
• プログラムコードから、AccessKey/SecretAccessKeyを排
除出来る
• ロールのキー(STS)は、自動的にリフレッシュされる
• 有効期限付きのキーが発行される
AWSサービスロールの利点
クロスアカウントアクセスロール
開発用AWSアカウント
本番用AWSアカウント
•あるAWSアカウントから、別の
AWSアカウントのAWSリソース
へアクセスするためのロール
クロスアカウントアクセスロール
開発用AWSアカウント
本番用AWSアカウント
• ロールに対して、そのロールを使える
AWSアカウント/IAMユーザーを設定
• AssumeRoleリクエストで、一時的な
キーを発行
S3アクセス
Assumeロール
• AWSアカウントや操作ごとにIAMユーザーを作らずに済む
• IAMアカウント管理が楽になる
• 同一AWSアカウント内でも利用可能
• 例えばIAMユーザーにはDBのdelete権限を付与せずに、DB
削除時だけ削除権限のついたロールを使うことができる
クロスアカウントアクセスロールの利点
IDプロバイダアクセスロール
• Facebook、GoogleなどのIDやSAMLに対して使
えるロール
• 指定のIDプロバイダのアカウントに対してロー
ルを割り当てると、「Facebookログインした
ユーザーがアクセスできるS3」などを実現でき
る
• ActiveDirectoryと連携して、AD上のユーザーを
管理コンソールにログインさせる(シングルサイ
ンオン)
ログイン
トークン
トークン
トークン
OK
• IAMを使うと、AWSインフラを細かく権限制御で
きる
• 通信はSORACOMで守る
• IAMロールは便利かつセキュア。極力利用すべし
• rootアカウント だめ 絶対
• デフォルト Deny
まとめ
SORACOMのイベントスケジュール
12月7日 AWSとの共催セミナー(大阪)
IoTプラットフォームとAWS IoT
12月10日 AWSとの共催セミナー(東京)
IoTプラットフォームとAWS IoT
12月11日 SORACOM User Group
1月27日 SORACOM Summit(仮)
《 株式会社ソラコムのビジョン 》
世界中のモノと人をつなげ
共鳴する社会へ
IAMでまもれ僕らのAWS(JAWS-UG 初心者支部)

IAMでまもれ僕らのAWS(JAWS-UG 初心者支部)