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オブジェクトを作成します。
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オブジェクトを作成し、その際にオプションでトークンの有効時間を指定します。
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を呼び出し、セッションのためのトークンを取得します。
GetSessionTokenResult session_token_result = sts_client.getSessionToken(session_token_request);
先程の呼び出し結果(session_token_resultに代入)を使用してセッション認証情報を取得します。
Credentials session_creds = session_token_result.getCredentials();
取得した認証情報を使用してAWSのリソースへアクセスする
セッション認証情報が取得できたら、それを用いてAWSリソースへアクセスしてみましょう。
たとえば、Amazon S3リクエストを行う例を示します。
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を使い分けていきましょう。
この記事の監修者・著者

- AWSパートナー/Salesforce認定コンサルティングパートナー 認定企業
-
ITエンジニア派遣サービス事業を行っています。AWSやSalesforceなど専門領域に特化したITエンジニアが4,715名在籍し、常時100名以上のITエンジニアの即日派遣が可能です。
・2021年:AWS Japan Certification Award 2020 ライジングスター of the Year 受賞
・2022年3月:人材サービス型 AWSパートナー認定
・AWS認定資格保有者数1,154名(2024年6月現在)
・Salesforce認定コンサルティングパートナー
・Salesforce認定資格者276名在籍(2024年5月現在)
・LPIC+CCNA 認定資格者:472 名(2024年6月時点)
最新の投稿
- 2024-12-27営業インタビュー情報共有の活性化の中心に。SP企画部の新たな取り組み
- 2024-07-01営業インタビュー最短で当日にご提案可能。 OPE営業の対応が早い3つの理由
- 2024-07-01営業インタビュー研修見学ツアーが高評価!「お客様のOPEに対する期待を高め、継続に貢献できればと思います。」
- 2024-07-01営業インタビュー信頼関係を構築し、エンジニアの長期就業へ

- 求人・転職サイトや自社採用サイトを使っているが、自社に合ったITエンジニアが応募してこない…
- すぐに採用したいが、応募がぜんぜん集まらない
オープンアップITエンジニアをご検討ください!
当社のITエンジニア派遣サービスは
- 派遣スピードが速い!(最短即日)
- 4,500名のエンジニアから貴社にマッチした人材を派遣
- 正社員雇用も可能
こんな特長があり、貴社の事業やプロジェクトに合った最適なITエンジニアを派遣可能です。
まずは下記ボタンから無料でご相談ください。