More Related Content Similar to AWS Black Belt Techシリーズ AWS IAM (20) More from Amazon Web Services Japan (20) AWS Black Belt Techシリーズ AWS IAM1. AWS Identity and Access Management
AWS Black Belt Tech Webinar 2014 (旧マイスターシリーズ)
アマゾンデータサービスジャパン株式会社
セキュリティコンサルタント ⾼高⽥田 智⼰己
4. AWS Identity and Access Management (IAM)
• AWS操作をよりセキュアに⾏行行うための認証・認可の仕組み
• AWS利利⽤用者の認証と、アクセスポリシーを管理理
§ AWS操作のためのグループ・ユーザー・ロールの作成が可能
§ グループ、ユーザーごとに、実⾏行行出来る操作を規定できる
§ ユーザーごとに認証情報の設定が可能
開発チーム 運用チーム
6. IAM ユーザー
• AWS操作⽤用のユーザー
– 1AWSアカウントで5000ユーザーまで作成可能
• ユーザーごとに設定可能な情報
– ユーザー名
• IAMユーザーの識識別と、マネジメントコンソールへのログインに使⽤用
• 64⽂文字までのアルファベット、数字、+=,.@-‐‑‒_̲
– パス(オプション)
• ユーザーにオプションとしてセットできる情報
• パスを元にユーザーの検索索が可能
• 組織階層やプロジェクトなどをセット 例例)/aws/sa/
• 512⽂文字までのBasic Latin⽂文字(アルファベット、数字、!"#$%&'()=~∼|-‐‑‒^@`̀{[}]*:+;?_̲)
• 開始と終了了が/であること
– 所属グループ
• 10のグループまで設定可能
– パーミッション
• AWSサービスへのアクセス権限
• JSON形式でポリシーを記述
– 詳細は後述
7. IAM グループ
• IAMユーザーをまとめるグループ
– 1AWSアカウントで100グループまで作成可能
• グループに設定可能な情報
– グループ名
• グループの識識別に使⽤用
– パス(オプション)
• 組織階層などをセット 例例)/aws/
– パーミッション
• グループに設定したパーミッションは、IAMユーザーに付与したパーミッションと同時に評価
• 評価⽅方法は後述
Group
9. IAMで使⽤用する認証情報(2)
§ AWSマネジメントコンソールへのログインパスワード
§ デフォルトは未設定(ログインできない)
§ 128⽂文字までのBasic Latin⽂文字
§ パスワード変更更時のポリシー設定が可能
§ AWSアカウントごとに設定
§ 最低パスワード⻑⾧長、⼤大⽂文字⼩小⽂文字等
§ MFA(多要素認証)
§ ハードウェアMFAと仮想MFAのいずれかを利利⽤用可能
§ ハードウェアMFA
§ Gemalto社からAWS⽤用のデバイスを購⼊入
§ Tokenタイプ
§ カードタイプ (NEW! 2014/5/29)
§ http://onlinenoram.gemalto.com/
§ 仮想MFA
§ スマートフォンやPCにインストール
§ Google Authenticatorなど、TOTP実装のソフトが利利⽤用可能
New!
13. IAM ポリシー
• AWSアクセスに対する権限設定
• JSON形式のアクセスポリシー⾔言語でアクセス条件を記述
– http://docs.aws.amazon.com/ja_̲jp/IAM/latest/UserGuide/AccessPolicyLanguage.html
{
"Statement
{
"Effect": "Allow",
"Action": [
" s3:ListBuckets ",
" s3:Get * "
],
"Resource": [
" arn:aws:s3:::mybucket "
],
"Condition": {
"IpAddress": {
"aws:SourceIP": [“176.32.92.49/32“]
}
}
}
]
}
このブロックを1条件として、
アクセス権限をチェック
14. アクセス条件の記述
{
"Effect": "Allow",
"Action": [
" s3:ListBuckets ",
" s3:Get * "
],
"Resource": [
"arn:aws:s3:::mybucket"
],
"Condition": {
"IpAddress": {
"aws:SourceIP":
[“176.32.92.49/32“]
}
}
}
Effect:
許可の設定なら”Allow”
拒否の設定なら”Deny”
Action:
対象となるAWS操作を指定
Resource:
対象となるAWSリソースを指定
Condition:
このアクセス制御が有効になる
条件の設定
この例例の場合、
「アクセス元IPが176.32.92.49だったら、S3のListBucketsとGet系
の操作を許可する」という意味
16. Resource
• 「Resource」は操作対象を指定する設定
§ EC2インスタンス
§ EBSボリューム
§ S3バケット
§ S3オブジェクト
• ARN(Amazon Resource Name)で記述
§ “arn:aws:”で始まる⽂文字列列
§ arn:aws:service:region:account:resource
§ 例例) arn:aws:s3:::mybucket
§ http://docs.aws.amazon.com/general/latest/gr/aws-‐‑‒arns-‐‑‒and-‐‑‒namespaces.html
• 指定リソース以外の場合は「NotResource」を使⽤用
– 例例) “NotResource” : “arn:aws:s3:::hoge”
"Resource": [
" arn:aws:s3:::mybucket"
]
17. Resourceが指定できるAWSサービス
• AWS IAM
• Amazon EC2
• Amazon RDS
• Amazon Route53
– Hostedzone,change
• Amazon S3
– bucket,object
• Amazon Glacier
– vault
• AWS Storage Gateway
– gateway,volume,target
• AWS CloudTrail
http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_SpecificProducts.html
• Amazon SimpleDB
– domain
• Amazon Redshift
• Amazon Kinesis
– stream
• Amazon SNS
– topic
• Amazon SQS
– queue
• Amazon DynamoDB
– Table, index
• Amazon SWF
– domain
• AWS Elastic Beanstalk
• AWS CloudFomration
• AWS OpsWorks
• Amazon CloudSearch
– domain
• Amazon Elastic Transcoder
• AWS Marketplace
2014/6現在
18. Amazon EC2のResource指定
• 以下のリソースの指定が可能
– VPC
– VPC Peering connection
– インスタンスID
– イメージ
– Key pair
– Network Interface
– Subnet
– Route table
– Placement group
• リソース指定のできるActionに関してはマニュアルを参照
– AcceptVpcPeeringConnection, CreateVpcPeeringConnection, DeleteVpcPeeringConnection
– RebootInstances,StartInstances,StopInstances,TerminateInstaces, RunInstances
– AttachVolume,DeleteVolume,DetachVolume
– 等々
• より詳細な条件(特定のタグのインスタンス等)については、Conditionで指定(後述)
"Resource": [
arn:aws:ec2:::instance/i-‐‑‒123abc"
]
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-‐‑‒policies-‐‑‒for-‐‑‒amazon-‐‑‒ec2.html
http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ec2-‐‑‒api-‐‑‒permissions.html
– Security Group
– Network ACL
– Customer gateway
– Internet gateway
– DHCP Options set
– インスタンスプロファイル名
– プレースメントグループ名
– スナップショットID
– EBSボリュームID
NEW! 2013/11
2014/6現在
20. Conditionの演算⼦子
• ⽂文字列列
– 完全⼀一致、部分⼀一致など
• 数値
– ⼀一致、以上、以下など
• ⽇日付および時間
– ⼀一致、⽇日付の後先など
• ブール
• IP アドレス
– 指定のアドレス、指定範囲など
• Amazon リソース名
– 完全⼀一致、部分⼀一致など
• ...IfExists
– 上記演算⼦子に付与。変数がない場合無視
• 条件キーの有無
http://docs.aws.amazon.com/ja_̲jp/IAM/latest/UserGuide/AccessPolicyLanguage_̲ElementDescriptions.html#Condition
"Condition": {
"StringEquals":
{"ec2:ResourceTag/stack":
“prod"}
}
"Condition": {
“streq":
{"ec2:ResourceTag/stack":
“prod"}
}
21. ポリシー変数
• 全てのリクエストで利利⽤用できる変数
– aws:CurrentTime
– aws:EpochTime
– aws:TokenIssueTime
– aws:principaltype
– aws:SecureTransport
– aws:SourceIp
– aws:UserAgent
– aws:userid
– aws:username
• AWSサービス固有の変数
– s3:prefix
– sns:Protocol
– ec2:ResourceTag/tag名 など
"Condition": {
"IpAddress":
{"aws:SourceIP":
“176.32.92.49/32“}
}
例例えば、API呼び出し/コンソール利利⽤用を指定
のIPアドレスだけに絞りたい場合に利利⽤用。
注)コンソールに関してはログインはできて
も操作する権限がないという状態になります。
22. EC2リソース⽤用のポリシー変数
• ec2:AccepterVpc
• ec2:AvailabilityZone
• ec2:EbsOptimized
• ec2:ImageType
• ec2:InstanceProfile
• ec2:InstanceType
• ec2:Owner
• ec2:Public
• ec2:ParentSnapshot
• ec2:PlacementGroup
• ec2:PlacementGroupStrategy
• ec2:Region
• ec2:RequesterVpc
• ec2:ResourceTag/tag-‐‑‒key
• ec2:RootDeviceType
• ec2:Tenancy
• ec2:VolumeIops
• ec2:VolumeSize
• ec2:VolumeType
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-‐‑‒policies-‐‑‒for-‐‑‒amazon-‐‑‒ec2.html
2014/6現在
"Condition": {
"StringEquals":
{“ec2:ResourceTag/Name":
“webserver“}
}
24. AWSサービス Action Resource tag
IAM ○
○
Amazon CloudFront ○
Amazon CloudWatch ○
AWS Data Pipeline ○
Amazon EC2 ○
○
○
Amazon ElastiCache ○
Amazon Elastic MapReduce ○
Amazon Elastic Transcoder ○
○
Amazon RDS ○
○
○
Amazon Route 53 ○
○
Amazon S3 / Glacier ○
○
Amazon Redshift ○
○
AWS OpsWorks ○
○
AWS Storage Gateway ○
○
Amazon SimpleDB ○
○
Amazon SES ○
Amazon DynamoDB ○
○
AWSサービス Action Resource tag
Amazon SNS ○
○
Amazon SQS ○
○
Amazon VPC ○
○
○
Amazon Direct Connect ○
Auto Scaling ○
AWS CloudFormation ○
○
AWS Elastic Beanstalk ○
○
AWS CloudHSM
Elastic Load Balancing ○
○
Amazon WorkSpaces
AWS Import/Export ○
Amazon Kinesis ○
○
Amazon AppStream ○
Amazon CloudSearch ○
○
Amazon SWF ○
○
○
Amazon CloudTrail ○
○
IAMをサポートするAWSサービス
http://docs.aws.amazon.com/ja_̲jp/IAM/latest/UserGuide/Using_̲SpecificProducts.html 2014/6現在
28. {"Version":"2012-‐‑‒10-‐‑‒17",
"Statement": [
{
"Sid": "AllowGroupToSeeBucketListInTheConsole",
"Action": ["s3:ListAllMyBuckets", "s3:GetBucketLocation"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::*"] },
{
"Sid": "AllowRootAndHomeListingOfCompanyBucket",
"Action": ["s3:ListBucket"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::my-‐‑‒company"],
"Condition":{"StringEquals":{"s3:prefix":["","home/"],"s3:delimiter":["/"]}} },
{
"Sid": "AllowListingOfUserFolder",
"Action": ["s3:ListBucket"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::my-‐‑‒company"],
"Condition":{"StringLike":{"s3:prefix":["home/Bob/*"]}} },
{
"Sid": "AllowAllS3ActionsInUserFolder",
"Action":["s3:*"],
"Effect":"Allow",
"Resource": ["arn:aws:s3:::my-‐‑‒company/home/Bob/*"] }
]
}
IAMポリシーのサンプル(3)
“my-‐‑‒company”バケット以下
の”home/Bob”以下のみ操作可能
Statementの中で複
数ポリシーを書く場
合は、Sidを他とか
ぶらないように設定
29. IAMポリシーのサンプル(4)
{"Version":"2012-‐‑‒10-‐‑‒17",
"Statement": [
{
"Sid": “StrictBucketLocation",
"Action": ["s3:CreateBucket"],
"Condition": {
"StringEquals": {
"s3:LocationConstraint": "ap-‐‑‒northeast-‐‑‒1"
}
},
"Resource": ["*"],
"Effect": "Allow"
},
{
"Sid": "AllowListBucket",
"Action": ["s3:ListAllMyBuckets", "s3:GetBucketLocation"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::*"]
}]
}
指定のリージョン以外でバ
ケットを作成できない
30. IAMポリシーのサンプル(5)
{"Version": "2012-‐‑‒10-‐‑‒17",
"Statement": [
{
"Action": ["ec2:StartInstances“,"ec2:StopInstances"],
"Resource": [
"arn:aws:ec2:*:*:instance/*"
],
"Effect": "Allow",
"Condition":{
"StringEquals":{
"ec2:ResourceTag/project":"myapp"
}
}]
}
指定のタグ(キー:project,値:myapp)のついた
インスタンスのみ起動/停⽌止可能
31. IAMポリシーのサンプル(6)
{ "Version":"2012-‐‑‒10-‐‑‒17",
"Statement":[
{
"Effect":"Allow",
"Action": "rds:CreateDBInstance",
"Resource":"arn:aws:rds:us-‐‑‒east-‐‑‒1:1234567890:db:test*",
"Condition":{"streq":{"rds:DatabaseEngine":"mysql"}},
"Condition":{"streq":{"rds:DatabaseClass": "db.t1.micro"}}
}]
}
Mysqlかつt1.microで、“test”で始まる名前のRDSのみ作成可能
32. サポートと請求画⾯面へのアクセスポリシー
• AWSサポートおよび費⽤用請求画⾯面にも、IAMユーザーでアクセス可能
• サポートは、”support”のアクションを許可
– 使えなくしたい場合は、Denyを使⽤用
• 費⽤用請求画⾯面は以下の⼿手順で設定
– ルートアカウントでログインして、セキュリティ質問を設定
– 費⽤用請求画⾯面へのアクセスをアクティブ化
– IAMユーザーに”aws-‐‑‒portal”のアクションを許可
https://aws.amazon.com/jp/premiumsupport/iam/
http://docs.aws.amazon.com/ja_̲jp/IAM/latest/UserGuide/ControllingAccessWebsite.html
{“Statement”: [{
“Action”: [ “support:*” ],
“Effect”: “Allow”,
“Resource”: “*”
}]
}
{"Statement":[{
"Effect":"Allow",
"Action":
[ "aws-‐‑‒portal:ViewBilling",
"aws-‐‑‒portal:ViewUsage"]
"Resource":"*"
}]
}
40. ユースケース: IAM Role for EC2 instances
プログラム
" EC2インスタンスに、指定のロールを付与する機能
§ EC2起動時にロールを指定すると、認証情報がメタデータに設定される
§ 認証情報はSTS(Security Token Service)で⽣生成
• インスタンス毎に異異なるキー
• 有効期限付きで、期限が来るとローテート
§ アプリケーションから認証情報を取得し、AWSサービスへアクセス
• インスタンス内からメタデータにアクセス
• アクセスキーID、シークレットアクセスキー、セッショントークンを取得
• 3つの認証情報でAPI呼び出し
IAM Role
メタデータ
43. AWSCredentials credentials =
new BasicAWSCredentials(“アクセスキー”,”シークレットキーID”);
AmazonEC2 ec2 = new AmazonEC2Client(credentials);”
ec2.describeInstances();
• AWS SDKを利利⽤用する場合、認証情報取得と有効期限切切れ前の再取得
を⾃自動的に実施可能
" AWS CLIはIAM Roleに対応済み
• http://aws.amazon.com/jp/cli/
AmazonEC2 ec2 = new AmazonEC2Client();”
ec2.describeInstances();
IAM Role利利⽤用後
IAM Role適⽤用のインスタンス
上では、認証情報の設定が不不要
45. IAM Team Account
Acct ID: 111122223333
s3-role
{
"Statement":
[
{
"Effect":
"Allow",
"Action":
“s3:*",
"Resource":
"*"
}
]
}
My AWS Account
Acct ID: 123456789012
Jeffのアクセスキーによる認証
S3-roleを引き受け、一時的なアクセ
スキーを取得
一時的なアクセスキーによる
S3APIの呼び出し
{
"Statement":
[{
"Effect":
"Allow",
"Action":
“sts:AssumeRole",
"Resource":
"arn:aws:iam::111122223333:role/s3-‐role"
}
]
}
{
"Statement":
[{
"Effect":"Allow",
"Principal":{"AWS":"arn:aws:iam::123456789012:root"},
"Action":"sts:AssumeRole"
}
]
}
IAMロールによるクロスアカウントアクセスの動作
S3-roleを誰が引き受けられるか定義したポリシーをs3-roleに設定アカウントBのs3-roleを引き受けることを許可するポリシーをJeffに設定
Jeff (IAM User)
s3-roleに付与されているポリシー
STS
46. Assumed-‐‑‒Role Session – Code Sample
public static Credentials getAssumeRoleSession(String AccessKey, String SecretKey )
{
Credentials sessionCredentials;
AmazonSecurityTokenServiceClient client = new AmazonSecurityTokenServiceClient(
Accesskey, GetSecretkey,
new AmazonSecurityTokenServiceConfig());
// Store the attributes and request a new AssumeRole session (temporary security credentials)
AssumeRoleRequest request = new AssumeRoleRequest
{
DurationSeconds = 3600,
RoleArn = "arn:aws:iam::111122223333:role/s3-‐‑‒role",
RoleSessionName = "S3BucketBrowser"
};
AssumeRoleResponse startSessionResponse = client.AssumeRole(request);
if (startSessionResponse != null) // Check for valid security credentials or null
{
AssumeRoleResult startSessionResult = startSessionResponse.AssumeRoleResult;
sessionCredentials = startSessionResult.Credentials;
return sessionCredentials;
}
else
{
throw new Exception("S3 Browser :: Error in retrieving temporary security creds, received NULL");
}
}
49. AWS Security Token Service(STS)とは
• ⼀一時的に利利⽤用するトークンを発⾏行行するサービス
• 動的にIAMユーザーを作成し、ポリシーを適⽤用できる
– STSはユーザー数制限なし
• IAM Role for EC2は、このSTSを利利⽤用
– Assume Role
50. Temporary Security Credentialsとは
• AWSに対する、⼀一時的な認証情報を作成する仕組み
– 期限付きの認証情報(認証チケット)
• ユーザーに対して、以下の3つのキーを発⾏行行
§ アクセスキー(ASIAJTNDEWXXXXXXX)
§ シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)
§ セッショントークン(AQoDYXdzEHQakAOAEHxwpf/ozF73gmp9vZDWDPkgFnzwSG/
3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+/
CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9/VX2zl8Hc/cy6La0r1/
GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz
9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b
+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9/
KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJ
XCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN
+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)
51. 認証情報を取得する⽅方法
• Self-‐‑‒sessions (GetSessionToken)
• Federated sessions (GetFederationToken)
• Assumed-‐‑‒role sessions
• AssumeRole
• AssumeRoleWithWebIdentity
• AssumeRoleWithSAML
Session
Access Key Id
Secret Access Key
Expiration
Session Token
Temporary
Security
Credentials
52. 認証情報取得のためのAPI
STSで利利⽤用できるAPI Action 概要
GetSessionToken ⾃自⾝身で利利⽤用するIAMユーザーのtemporary security
credentialsを取得するためのアクション。
GetFederationToken 認証を受けたFederatedユーザーのtemporary security
credentialsを取得するためのアクション。
AssumeRole 既存のIAMユーザーの認証情報を⽤用いて、IAM Roleの
temporary security credentialsを取得するためのアクショ
ン。
AssumeRoleWithWebIdentity AmazonやFacebook、Googleによる承認情報を使⽤用して
ロールを引き受け、temporary security credentialsを取得
するためのアクション。
AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストする
ことでロールを引き受けtemporary security credentialsを
取得するためのアクション。
http://docs.aws.amazon.com/STS/latest/UsingSTS/Welcome.html
53. 認証情報の有効期限
• トークンのタイプにより有効期限は様々[Min/Max/Default]
• Self (Account) [15 min / 60 min / 60 min]
• Self (IAM User) [15 min / 36 hrs / 12 hrs]
• Federated [15 min / 36 hrs / 12 hrs]
• Assumed-‐‑‒role [15 min / 60 min / 60 min]
• 発⾏行行したチケットは延⻑⾧長や期間短縮は出来ない
• 即座にアクセス制御したい場合は、発⾏行行に使⽤用したIAMユーザーやIAMロールの権限を変更更する
Session
Access Key Id
Secret Access Key
Expiration
Session Token
58. ユースケース: API FederationによるS3アクセス
(Sample -‐‑‒ http://aws.amazon.com/code/1288653099190193)
• Identity provider
– Windows Active Directory
– ADグループメンバーシップに応じた権限付与
• AWS API (S3*)へのアクセスを付与
• GetFederationToken APIの利利⽤用
59. • Access Key
• Secret Key
• Session Token
Get Federation Token
Response
AWS API Federationの動作
Customer (Identity Provider) AWS Cloud (Relying Party)
AWS Resources
User
Application
Active
Directory
Federation
Proxy
Get Federation
Token Request
エンタイトル
メントの決定
ユーザーの認証
S3 Bucket
with Objects
Amazon
DynamoDB
Amazon
EC2
認証情報の
リクエスト
認証情報の
受け取り
APP
Federation
Proxy
• GetFederationTokenRequest()の利利⽤用には
Proxy上のIAMユーザーのクレデンシャルを
利利⽤用
• そのIAMユーザーの権限はフェデレーション
ユーザーの権限をカバーしている必要がある
• Proxyはこの特権的なクレデンシャルをセ
キュアに保管する必要がある
AWS APIの
呼び出し
http://aws.typepad.com/aws_̲japan/2011/08/aws-‐‑‒identity-‐‑‒and-‐‑‒access-‐‑‒management-‐‑‒now-‐‑‒with-‐‑‒identity-‐‑‒federation.html
60. ユースケース: Console Federation
(Sample -‐‑‒ http://aws.amazon.com/code/4001165270590826)
• Identity provider
– Windows Active Directory
– ADグループメンバーシップに応じた権限付与
– ADグループに応じたIAMロールの選択
• AWS 管理理コンソールへのシングルサインオン
• AssumeRole APIの利利⽤用
61. Console Federationの動作
Customer (IdP) AWS Cloud (Relying Party)
AWS
Management
Console
Browser
interface
Corporate
directory
Federation
proxy
URLにアクセス
ADグループ
の提⽰示
ユーザーの認証
コンソールへのリ
ダイレクト
10
ログインURLの作成
List RolesRequest
Assume Role Response
Temp Credentials
• Access Key
• Secret Key
• Session Token
AssumeRole Request
ロールを選択でき
るcombo
Boxの作成
Federation
proxy
• AssumeRoleRequest()を利利⽤用するため
Proxy上のIAMユーザーのクレデンシャ
ルを利利⽤用
• IAMユーザーの権限はListRolesと
assume roleを⾏行行えるものが必要
• Proxyはこのクレデンシャルをセキュア
に保管する必要がある
List RolesResponse
62. SAML 2.0によるSSO Federation
• Security Token Service (STS)がSecurity Assertion Markup Language
(SAML)をサポートしました。
• AWSリソースへのアクセスに既存のID管理理ソフトウェアを利利⽤用できます。
• AWS管理理コンソールへのSSOにも利利⽤用。
• 新しいassumeRoleWithSAML APIによりAPIフェデレーションを⾏行行えます。
New 2013/11/11
63. SAMLによるConsole Federationの動作
Enterprise (Identity Provider) AWS (Service Provider)
AWS Sign-‐‑‒in
Browser
interface
Corporate
identity
store
Identity
provider
内部ポータルへのアクセス
ポータルはIdPとしても機能
認証応答
の受け取り
AWS管理理コンソールへ
のリダイレクト
新しいAWSのサインイン・
エンドポイントに対して
SAMLアサーションをポスト
http://aws.typepad.com/aws_̲japan/2013/11/aws-‐‑‒identity-‐‑‒and-‐‑‒access-‐‑‒management-‐‑‒using-‐‑‒saml.html
64. ユースケース: Web Identity Federation
• AssumeRoleWithWebIdentityの利利⽤用
– ソーシャルサービスの認証を元に、AWSへのアクセスキーを発⾏行行するサービス
• ソーシャルサービス認証を確認するサーバが不不要
– 例例えばスマートフォンアプリとS3だけでシステムが作成可能
• 現在Google,Facebook,Amazon(Login with Amazon)に対応
• IAM Roleを使⽤用して実現
65. Web Identity Federationの動作
AWS Cloud
US-‐‑‒EAST-‐‑‒1
EU-‐‑‒WEST-‐‑‒1
AP-‐‑‒SOUTHEAST-‐‑‒1
AWS Services
Amazon
DynamoDB
S3
ユーザー認証 AWSサービス
へのアクセス
IAM
EC2
Instances
Tokenの
検証
Web identity
Provider
ポリシー
の確認
Id Token
の取得
Mobile App
http://aws.typepad.com/aws_̲japan/2013/05/aws-‐‑‒iam-‐‑‒now-‐‑‒supports-‐‑‒amazon-‐‑‒facebook-‐‑‒and-‐‑‒google-‐‑‒identity-‐‑‒federation.html
66. STS対応サービス
2014/06現在
AWS Products
AWS Billing and Cost Management Yes
Amazon AppStream Yes
Auto Scaling Yes
AWS CloudFormation Yes
Amazon CloudFront Yes
AWS CloudHSM No
Amazon CloudSearch Yes
AWS CloudTrail Yes
Amazon CloudWatch Yes
AWS Data Pipeline Yes
AWS Direct Connect Yes
Amazon DynamoDB Yes
AWS Elastic Beanstalk No
Amazon Elastic Compute Cloud Yes
AWS Products
Elastic Load Balancing Yes
Amazon Elastic MapReduce No
Amazon Elastic Transcoder Yes
Amazon ElastiCache Yes
Amazon Flexible Payments Service No
Amazon Fulfillment Web Service No
Amazon Glacier Yes
AWS Identity and Access Management Yes
AWS Import/Export Yes
Amazon Kinesis Yes
AWS Marketplace Yes
AWS Marketplace Management Portal No
Amazon Mechanical Turk No
AWS OpsWorks Yes
AWS Products
Amazon Redshift Yes
Amazon Relational Database Service Yes
Amazon Route 53 Yes
AWS Security Token Service Yes
Amazon Simple Email Service Yes
Amazon Simple Notification Service Yes
Amazon Simple Queue Service Yes
Amazon Simple Storage Service Yes
Amazon Simple Workflow Service Yes
Amazon SimpleDB Yes
AWS Storage Gateway Yes
AWS Support Yes
Amazon Virtual Private Cloud Yes
Amazon WorkSpaces No
http://docs.aws.amazon.com/STS/latest/UsingSTS/UsingTokens.html