Amazon Web Services ブログ
AWS Single Sign-On でコマンドラインを使った AWS アカウントへのアクセスが利用可能に
AWS Single Sign-On で AWS Command Line Interface (CLI) を使ったアクセスが簡単にご利用できるようになりました。AWS Single Sign-On (AWS SSO) のユーザポータルに既存の企業内の認証情報を使ってサインインして、AWS アカウントとパーミッションセットを選択すると、AWS CLI で使用できる一時的な認証情報を取得できるようになりました。
AWS SSO は複数の AWS アカウントやビジネスアプリケーションへのシングルサインオンでのアクセスを集中管理できるサービスです。AWS の一時的な認証情報は AWS CLI などの開発者用ツールで AWS サービスを管理するための短期間限定の認証を簡単に実現する方法です。
これまで AWS アカウントのリソースにアクセスするのに CLI を使ってコマンドを実行する場合は、各アカウントごとにパスワードを記憶しておき、サインインして認証情報を一度取得する必要がありました。今回、AWS SSO は各 AWS アカウントにサインインして認証情報を取得する必要をなくします。代わりに、AWS SSO ユーザポータルに既存の企業内の認証情報を使ってサインインし、権限が与えられた AWS アカウントの一時的な認証情報を取得して CLI でアカウント内のリソースにアクセスすることができます。一時的な認証情報は、許可されている権限に制限されています。
このブログ記事では、AWS SSO ユーザポータルから一時的な認証情報を取得して、AWS CLI で AWS アカウント内のリソースにアクセスする方法を紹介します。まず、権限が与えられているアカウントのパーミッションセットのための短期間限定の認証情報を取得する方法を説明します。そして、認証情報を使う3つの方法を紹介します。
紹介するシナリオでは、”AnyCompany”の管理者をしており、2つの AWS アカウントに対して AWS CLI で aws ec2 describe-instances
コマンドを実行してインスタンスのリストを取得したいという事とします。“AnyCompany” では AWS アカウントへのアクセスに AWS SSO を使えるようになっています。
事前条件
AWS CLI がインストールされている必要があります。また、AWS SSO が設定されており、企業のディレクトリに接続され、ユーザやグループに AWS アカウントにアクセスするための権限がパーミッションセットで設定されている必要があります。詳しくは、“AWS Single Sign-On 紹介“ を御覧ください。
AWS SSO と AWS CLI を使って AWS アカウント内のリソースにアクセスする方法
1. 企業内の認証情報を使って AWS SSO のユーザポータルにサインインします。もし、会社の AWS SSO ユーザポータルの URL を知らなければ、IT 管理者に聞いて下さい。URL は AWS SSO コンソールの Dashboard メニュー内にある “User portal URL” セクションに表示されています。ユーザポータルを開くと、アクセスが許可されている AWS アカウントが表示されます。
2. AWS アカウントのリストを展開するために “AWS Account” を選択します。
3. AWS CLI を使ってアクセスしたい AWS アカウントを選択します。そのアカウントに対して使用が許可されているパーミッションセットの一覧が展開されます。例えば、セキュリティグループを作成するために必要な権限を持っているパーミッションセットである “Administrator” を選択するとします。パーミッションセット “Administrator” に対する “Command Line or Programmatic Access” を選択します。
4. AWS SSO はリクエストされた認証情報をお使いの OS に合わせた形で表示します。MacOS and Linux と Windows のタブを切り替えることで、必要であれば異なる OS に合わせた形で表示することも可能です。AWS SSO は一時的な認証情報を使用するための方法を以下の通り3つ表示します。認証情報は 60 分間有効です。:
a. 選択した AWS アカウントに対して AWS CLI からコマンドを実行するには、“Setup AWS CLI environment variables” セクションにあるコマンドをコピーして、環境変数を設定する必要があるターミナルウィンドウにコマンドを貼り付けます。これらの環境変数はそのターミナルウィンドウで有効になります。
b. 1つの AWS アカウントに対して複数のターミナルウィンドウからコマンドを実行したい場合は、“Setup AWS CLI profile” セクションにあるプロファイルをコピーして、~/.aws/credentials ファイルの最後に貼り付けて新しい名前のプロファイルを設定します。より詳しく知るには、“設定ファイルと認証情報ファイル“ を見て下さい。AWS CLI コマンドで –profile オプションでプロファイル名を指定することで、この認証情報を使用することができます。同じ認証ファイルを使用する同じユーザ環境では全てのターミナルウィンドウでこの方法が使用できるようになります。
c. AWS サービスクライアント(開発者用ツール)から AWS リソースにアクセスするには、“Copy individual values” セクションにある認証情報をクライアントに設定します。より詳しい情報については、“AWS STS を使用した一時的な認証情報の取得“ にある “一時的な認証情報を使用した AWS リソースへのアクセス” セクションを御覧ください。
5. コピーしたい認証情報の使用方法の上にマウスを移動させてクリックします。この例では “Option 1” を選択します。
6. コピーされました。ターミナルウィンドウに環境変数を貼り付けて実行します。:
$ export AWS_ACCESS_KEY_ID=“ASIAJWOHLDZASDEXAMPLE"
$ export AWS_SECRET_ACCESS_KEY="feTxcGI2aus2m4RZh+eDASvqw3vOq/jS+EXAMPLE"
$ export AWS_SESSION_TOKEN="FQoDYXdzEFQaDIiq9STHISISEXAMPLE”
7. 任意で、“aws configure list
” コマンドを実行して正しく認証情報が設定された確認することができます。access_key
と secret_key
に値が割り当てられており、それぞれの Location
が env
となっている事を確認します。
8. これで AWS CLI コマンドを実行できるようになりました(管理者で割当てられている権限の範囲で)。以下は AWS アカウント内の EC2 インスタンスのリストを表示する場合の例です。
9. 異なる AWS アカウントに対して、同じやそれ以外の AWS CLI コマンドを実行するには、この手順をステップ 3 から繰り返します。AWS SSO ユーザポータルを開いたブラウザのウィンドウをそのままにしておくと、再度サインインしなくても他の AWS アカウントにスイッチするのが簡単です。アカウントやパーミッションセットを切り替えたり、一時的な認証情報の有効期限が切れた後に追加で作業をしたりする際は、毎回ユーザポータルから使用したいアカウントのパーミッションセットに対して表示される新しい認証情報をコピーして使う必要があります。
まとめ
このブログ記事では、AWS CLI を使ってサービスを管理するために、既存の企業内で使用しているユーザ名とパスワードを使って AWS SSO から一時的な認証情報を取得する方法を説明しました。AWS SSO についてフィードバックや質問があれば、AWS SSO フォーラムで新しいスレッドを作成してください。
– Anand Murugesan (翻訳は SA 辻 義一 が担当しました。原文はこちら)