LoginSignup
66
40

More than 3 years have passed since last update.

AWS Security Token Service (AWS STS)

Last updated at Posted at 2020-05-17

AWS Security Token Service (AWS STS) とは

STSはAWS Security Token Serviceの略である。

AWS リソースへのアクセスをコントロールできる一時的セキュリティ認証情報を持つ、信頼されたユーザーを作成および提供することができます。

つまり以下ができるようになる。

  • ユーザーに対して AWS ID を定義せずに AWS リソースへのアクセスを許可できる

これによりIDフェデレーションが可能となる。

※IDフェデレーションの概要
IDフェデレーションは、それぞれ独自のID管理システムを持つ複数のセキュリティドメイン間で、それぞれのユーザーIDをリンクさせる。2つのドメインでIDフェデレーションを実現すると、一方のドメインで認証を受けたエンドユーザーは、他方のドメインでもログインしないでそのリソースにアクセスできる。

一時的な認証情報の一般的なシナリオ

シナリオとしては以下がある。

  • 所有している別の AWS アカウントへのアクセスを IAM ユーザーに許可

  • 第三者が所有する AWS アカウントへのアクセス権を付与する

  • AWS サービスへのアクセスの提供

  • 外部で認証されたユーザー(ID フェデレーション)へのアクセスの許可

試験範囲的にはクロスアカウントかフェデレーションかのどちらかがポイントとなる。

AWS サービスへのアクセスの提供

サービスロールを設定してアクセス権限を付与する

第三者が所有する AWS アカウントへのアクセス権を付与する

クロスアカウントアクセス設定を行う。

所有している別の AWS アカウントへのアクセスを IAM ユーザーに許可

こちらもクロスアカウントアクセス設定を行う。

外部で認証されたユーザー(ID フェデレーション)へのアクセスの許可

社内のディレクトリなど、AWS 以外の ID をユーザーがすでに持っているとします。それらのユーザーが AWS リソースを使用する (または、それらのリソースにアクセスするアプリケーションを使用する) 必要がある場合、それらのユーザーには AWS セキュリティ認証情報も必要です。IAM ロールを使用して、ID が組織または第三者のプロバイダー (IdP) からフェデレーションされたユーザーのアクセス許可を指定できます。

これには以下の ID フェデレーションがある。

  • Amazon Cognito を使用したモバイルまたはウェブベースのアプリのユーザーのフェデレーション
    • ウェブ ID フェデレーション
  • パブリック ID サービスプロバイダーまたは OpenID Connect を使用したユーザーのフェデレーション
    • ウェブ ID フェデレーション
  • SAML 2.0 を使用したユーザーのフェデレーション
    • エンタープライズIDフェデレーション
  • カスタム ID ブローカーアプリケーションを作成するユーザーのフェデレーション
  • SAML 2.0 フェデレーティッドユーザーが AWS マネジメントコンソールにアクセス可能にする

Amazon Cognito を使用したモバイルまたはウェブベースのアプリのユーザーのフェデレーション

スクリーンショット 2020-05-17 13.02.27.png

不特定多数に長期的な AWS セキュリティ認証情報を配布しないユースケースに適用する。
IdpとAWSで信頼関係を結ぶこと

パブリック ID サービスプロバイダーまたは OpenID Connect を使用したユーザーのフェデレーション

AssumeRoleWithWebIdentity オペレーション
スクリーンショット 2020-05-17 13.29.04.png

SAML 2.0 ベースのフェデレーション

AssumeRoleWithSAML オペレーション
スクリーンショット 2020-05-17 12.19.57.png

このSAML 2.0 ベースのフェデレーションを使用するには、事前に組織の IdP と AWS アカウントを設定して相互に信頼する必要があることだけ注意

カスタム ID ブローカーを使用したフェデレーション

GetFederationToken API オペレーション
スクリーンショット 2020-05-17 14.01.16.png

SAML 2.0 フェデレーティッドユーザーが AWS マネジメントコンソールにアクセス可能にする

スクリーンショット 2020-05-17 13.45.31.png

ユーザーは組織の内部ポータルから AWS マネジメントコンソールに移動するだけで、AWS 認証情報を指定する必要はありません。

  • ユーザーは組織のポータルにアクセスして、AWS マネジメントコンソール に移動するオプションを選択
  • ポータルが組織内のユーザーの ID を確認
  • ポータルは、ユーザーを識別するアサーションを含む SAML アサーションレスポンスを生成し、ユーザーの属性を含めます。コンソールセッションが有効な期間を指定する SessionDuration という SAML アサーションの属性を含むよう IdP を設定できます。セッションタグとして属性を渡すように IdP を設定することもできます。ポータルはこのレスポンスをクライアントブラウザに送信
  • クライアントブラウザは AWS のシングルサインオンエンドポイントにリダイレクトされ、SAML アサーションを投稿
  • エンドポイントは、ユーザーの代わりに一時的なセキュリティ認証情報をリクエストし、コンソールのサインイン URL を作成
    • エンドポイントが代わりにリクエストしている点がポイント
  • AWS は、サインイン URL をクライアントにリダイレクトとして送信
  • クライアントのブラウザは AWS マネジメントコンソールにリダイレクト

試験に出るトラブルシューティング

アクセスキーを紛失しました。

  • マネコンから確認できます。
  • シークレットキーを無くした場合は新しいキーを作り直してください。

古いアカウントに入りたい

  • ログイン画面からEmail回復手段があるはず
  • 詰んだ場合はAWSサポートに連絡してください

AWS サービスに要求を送信すると "アクセス拒否" が発生します

  • リクエストしたアクションとリソースを呼び出すアイデンティティベースのポリシーのアクセス許可を持っていることを確認
  • リソースベースのポリシーをサポートするサービスにアクセス
    • ポリシーでお客様がプリンシパルに指定されていて、アクセス権限を付与されていることを確認
  • アカウント内のサービスにリクエストする
    • アイデンティティベースのポリシーまたはリソースベースのポリシーを使用して、アクセス許可を付与
  • 別のアカウントのサービスにリクエスト
    • アイデンティティベースのポリシーとリソースベースのポリシーの両方でアクセス許可を付与
  • キー – 値のペアを持つ条件がポリシーに含まれている場合
    • ポリシーを慎重に確認

一時的な認証情報を使用して要求を送信すると "アクセス拒否" が発生します

  • サービスが一時的セキュリティ認証情報を受け入れることを確認
  • 一時的な認証情報が失効していないことを確認
  • IAM ユーザーまたはロールに正しいアクセス権限があるかどうかを確認
    • 一時的なセキュリティ認証情報のアクセス許可は IAM ユーザーまたはロールから取得されます。

ポリシーの変数が機能していません

  • 変数のあるすべてのポリシーで、バージョン番号: "Version": "2012-10-17" がポリシーに含まれていることを確認

参考文献

押さえておきたい機能

自分のリソースがどのように共有されているかを分析できるサービス

66
40
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
66
40