AWS STSとは?IAMユーザーとの違いと使い方について紹介!

この記事でわかること
AWS STSとは?
AWS STSとはAWS Security Token Serviceの略でAWSリソースへアクセスするための一時的なセキュリティ認証情報を提供するためのサービスです。
一時的なセキュリティキーを作成することで、信頼するユーザーへAWSリソースへのアクセスを許可することができます。
IAMのアクセスキーとの違いは「有効期限」を設定して一時的な許可が可能な点と、リクエストに応じてその都度動的に作成されるため、ユーザーに紐づいて保存されない点となります。
AWS STSを使うことでAWS IDを発行せずに済むため、一時的なアクセスが必要なユーザーに対してとても有効な手段です。
AWS STSで一時的認証情報を使うには?
まずはAWS STSで一時的認証情報を使う際の流れについて把握しましょう。
AWS STSで一時的認証情報を使用する場合は、使用したいリージョンでAWS STSを有効化しておき、権限のあるユーザーで一時的認証情報を取得(この時に有効時間も指定)し、取得した認証情報を用いてクライアントからAWSリソースへアクセスします。
リージョンのAWS STSを有効化する(任意)
任意のAWSリージョンでAWS STSを有効化する場合の手順について説明します。AWS STSの有効化はAWSマネジメントコンソールから行います。
まず、AWSマネジメントコンソールにrootユーザーなどの管理者権限のあるユーザーでログインしましょう。もしくは対象のアカウントに対してIAM管理タスク("iam:*")
を実行する権限を持ったユーザーを使用します。
つぎに[サービス]-[セキュリティ、ID、およびコンプライアンス]の欄から[IAM]を開き、左ペインから[アクセス管理]-[アカウント設定]を選択します。
Security Token Service (STS)欄を展開して「エンドポイント」のリージョン一覧から任意のリージョンを有効化します。
デフォルトでは基本的にすべてのリージョンで有効化されているため、STSで使用したくないリージョンがある場合は同じ方法で無効化することになります。
STSで使用可能なエンドポイントの一覧
STSで使用可能なエンドポイントの一覧を以下に示します。もし、使用したくないリージョンがある場合は、上記「リージョンのAWS STSを有効化する(任意)」に記している方法で無効化しましょう。
グローバルと米国東部(バージニア)に関してはデフォルトで有効かつ無効化はできないようになっています。
さらにアフリカ(ケープタウン)、アジアパシフィック(香港)、ヨーロッパ(ミラノ)、中東(バーレーン)に関しては有効化することができません。
リージョン名 | エンドポイント | デフォルト | 有効/無効切り替え |
---|---|---|---|
グローバル | sts.amazonaws.com | 有効 | 不可 |
米国東部(バージニア北部) | sts.us-east-1.amazonaws.com | 有効 | 不可 |
アフリカ (ケープタウン) | sts.af-south-1.amazonaws.com | 無効 |
不可 |
アジアパシフィック (香港) | sts.ap-east-1.amazonaws.com | 無効 |
不可 |
ヨーロッパ (ミラノ) | sts.eu-south-1.amazonaws.com | 無効 |
不可 |
中東 (バーレーン) | sts.me-south-1.amazonaws.com | 無効 |
不可 |
リージョン名 | エンドポイント | デフォルト | 有効/無効切り替え |
---|---|---|---|
米国東部 (オハイオ) | sts.us-east-2.amazonaws.com | 有効 | 可 |
米国西部 (北カリフォルニア) | sts.us-west-1.amazonaws.com | 有効 | 可 |
米国西部 (オレゴン) | sts.us-west-2.amazonaws.com | 有効 | 可 |
アジアパシフィック (ムンバイ) | sts.ap-south-1.amazonaws.com | 有効 | 可 |
アジアパシフィック (ソウル) | sts.ap-northeast-2.amazonaws.com | 有効 | 可 |
アジアパシフィック (シンガポール) | sts.ap-southeast-1.amazonaws.com | 有効 | 可 |
アジアパシフィック (シドニー) | sts.ap-southeast-2.amazonaws.com | 有効 | 可 |
アジアパシフィック (東京) | sts.ap-northeast-1.amazonaws.com | 有効 | 可 |
カナダ (中部) | sts.ca-central-1.amazonaws.com | 有効 | 可 |
欧州 (フランクフルト) | sts.eu-central-1.amazonaws.com | 有効 | 可 |
欧州 (アイルランド) | sts.eu-west-1.amazonaws.com | 有効 | 可 |
欧州 (ロンドン) | sts.eu-west-2.amazonaws.com | 有効 | 可 |
欧州 (パリ) | sts.eu-west-3.amazonaws.com | 有効 | 可 |
欧州 (ストックホルム) | sts.eu-north-1.amazonaws.com | 有効 | 可 |
南米 (サンパウロ) | sts.sa-east-1.amazonaws.com | 有効 | 可 |
AWS STSから一時的セキュリティ情報を取得する
AWS STSから一時的セキュリティ情報を取得するにはAWS SDK for Javaを使用してオブジェクト作成、コールを行います。
以下で大まかな方法を紹介していきます。
AWSSecurityTokenServiceClientオブジェクトを作成する
まずは以下のようにAWSSecurityTokenServiceClientオブジェクトを作成します。
1
|
AWSSecurityTokenService sts_client = new AWSSecurityTokenServiceClientBuilder().standard().withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration("sts-endpoint.amazonaws.com", "signing-region")).build()
|
クライアントの作成の際に引数(AWSSecurityTokenService sts_client = new AWSSecurityTokenServiceClientBuilder().standard().build();)
を指定しない場合、デフォルトの認証情報プロバイダチェーンが使用されます。
GetSessionTokenRequestオブジェクトを作成する
GetSessionTokenRequestオブジェクトを作成し、その際にオプションでトークンの有効時間を指定します。
1
2
|
GetSessionTokenRequest session_token_request = new GetSessionTokenRequest();
session_token_request.setDurationSeconds(7200); // optional.
|
上記は有効時間を7200秒としています。
トークンの有効時間は900秒から129600秒までの間で指定することができ、特に指定せずsetDurationSeconds();
とした場合は43200秒となります。
IAMユーザーではなくrootユーザーを使う場合はセキュリティの観点から3600秒までの指定しかできないようになっています。
getSessionTokenを呼び出し、セッションのためのトークンを取得する
GetSessionTokenRequestオブジェクトを用いて、AWS STSクライアントのgetSessionTokenを呼び出し、セッションのためのトークンを取得します。
1
2
|
GetSessionTokenResult session_token_result =
sts_client.getSessionToken(session_token_request);
|
先程の呼び出し結果(session_token_resultに代入)を使用してセッション認証情報を取得します。
1
|
Credentials session_creds = session_token_result.getCredentials();
|
取得した認証情報を使用してAWSのリソースへアクセスする
セッション認証情報が取得できたら、それを用いてAWSリソースへアクセスしてみましょう。
たとえば、Amazon S3リクエストを行う例を示します。
1
2
3
4
5
6
7
8
|
BasicSessionCredentials sessionCredentials = new BasicSessionCredentials(
session_creds.getAccessKeyId(),
session_creds.getSecretAccessKey(),
session_creds.getSessionToken());
AmazonS3 s3 = AmazonS3ClientBuilder.standard()
.withCredentials(new AWSStaticCredentialsProvider(sessionCredentials))
.build();
|
一時的認証情報を有効活用しよう
AWS STSを使うことによりアプリケーション等で一時的認証情報を使用することが可能になります。
IAMユーザーを作成する必要がなく、有効期限を設定でき、ユーザーの管理を行う必要なくなるため、多くのユーザーがAWSリソースへアクセスするようなアプリケーションなどの場合はAWS STSを利用するとセキュリティ的にも好ましいでしょう。
AWSリソースへのアクセス用途に応じてIAMユーザーとAWS STSを使い分けていきましょう。
Search キーワード検索
Popular 人気の記事
-
AWS EBSとは?8つの特徴とEBSボリュームについても解説
公開: 更新:
reccomended おすすめ記事
-
AWSエンジニアの将来性は?年収と必要なスキル6つをご紹介!
公開: 更新:
Categories 連載一覧
Tags タグ一覧
Jobs 新着案件
-
通信キャリア向け基盤構築/東京都渋谷区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】/在宅ワーク
月給65万~65万円東京都渋谷区(神泉駅) -
各種対応/東京都新宿区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】/テレワーク
月給60万~60万円東京都新宿区(高田馬場駅) -
要件定義、構築/東京都千代田区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】/テレワーク
月給60万~60万円東京都千代田区(飯田橋駅) -
運用構築/東京都千代田区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】/テレワーク
月給56万~56万円東京都千代田区(飯田橋駅) -
監視システムの保守、更改/東京都千代田区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】/テレワーク
月給55万~55万円東京都千代田区(神保町駅) -
各種対応/東京都千代田区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】
月給60万~60万円東京都千代田区(虎ノ門駅)