コマンドラインで簡単設定!AWS SSO と aws configure の連携
クラウドコンピューティングの利用が拡大するにつれて、複数のAWSアカウントを安全かつ効率的に管理する必要性が高まっています。AWS Single Sign-On (SSO) は、AWS環境へのシングルサインオンアクセスを提供するサービスであり、IAMユーザーの作成や管理の手間を軽減し、セキュリティを向上させます。
この記事では、コマンドラインインターフェース(CLI)を通じてAWS SSOを簡単に設定し、aws configure
と連携させる方法について詳しく解説します。この連携により、CLIからのAWSリソースへのアクセスが容易になり、開発者やシステム管理者の生産性を向上させることができます。
目次
- AWS SSO とは?
- AWS SSO の概要
- AWS SSO の利点
- 前提条件
- AWS アカウントの準備
- AWS CLI のインストールと設定
- AWS SSO の有効化
- AWS SSO の設定
- AWS SSO コンソールの操作
- アイデンティティソースの設定
- ユーザーとグループの作成
- AWS アカウントへのアクセス許可の割り当て
- AWS CLI と AWS SSO の連携
aws configure sso
コマンド- プロファイルの作成と設定
- セッションの開始と認証情報の取得
- AWS CLI の利用
- 認証情報の確認
- AWS リソースへのアクセス
- 複数のプロファイルの管理
- トラブルシューティング
- よくあるエラーとその解決策
- 認証情報の有効期限切れ
- アクセス許可の問題
- ベストプラクティス
- セキュリティの強化
- ロールの利用
- 環境変数との連携
- まとめ
1. AWS SSO とは?
AWS SSO の概要
AWS Single Sign-On (SSO) は、複数のAWSアカウントおよびビジネスアプリケーションへのシングルサインオンアクセスを提供するクラウドサービスです。組織内のユーザーは、一度認証を受けるだけで、割り当てられたすべてのAWSアカウントやアプリケーションにアクセスできるようになります。AWS SSOは、IAMユーザーの作成や管理の手間を軽減し、セキュリティポリシーの一元管理を可能にします。
AWS SSO の利点
- 集中管理: AWS SSOを使用すると、すべてのアカウントとアプリケーションへのアクセスを一元的に管理できます。これにより、ユーザーの追加、削除、およびアクセス許可の変更が容易になります。
- セキュリティの向上: 強力な認証メカニズム(多要素認証など)を適用し、セキュリティポリシーを一元的に管理することで、AWS環境全体のセキュリティを向上させることができます。
- 生産性の向上: ユーザーは、複数のアカウントやアプリケーションに対して個別にログインする必要がなくなるため、生産性が向上します。
- コンプライアンスの簡素化: アクセスログを一元的に監査できるため、コンプライアンス要件を満たすための作業が簡素化されます。
- コスト削減: IAMユーザーの管理コストを削減し、AWS Organizationsとの統合により、アカウント管理を効率化できます。
2. 前提条件
AWS SSOを効果的に利用するためには、いくつかの前提条件を満たしている必要があります。
AWS アカウントの準備
AWS SSOを使用するには、少なくとも1つのAWSアカウントが必要です。複数のアカウントを管理する場合は、AWS Organizationsを設定することをお勧めします。AWS Organizationsを使用すると、アカウントを一元的に管理し、AWS SSOとの統合が容易になります。
AWS CLI のインストールと設定
AWS CLI (Command Line Interface) は、コマンドラインからAWSリソースを操作するためのツールです。AWS SSOと連携させるためには、AWS CLIをインストールし、基本的な設定を行う必要があります。
-
AWS CLI のインストール:
- macOS:
bash
brew install awscli - Linux:
bash
sudo apt update
sudo apt install awscli - Windows:
- AWS CLI MSIインストーラをダウンロードして実行します。(AWS CLI のインストールを参照)
- macOS:
-
AWS CLI のバージョンの確認:
bash
aws --version
AWS CLI バージョン2 (v2) 以降を使用していることを確認してください。AWS SSOとの連携には、AWS CLI v2 が必要です。 -
AWS CLI の設定 (初期設定):
AWS CLIを初めて使用する場合は、aws configure
コマンドを使用して基本的な設定を行います。bash
aws configureこのコマンドを実行すると、以下の情報が求められます。
- AWS Access Key ID [None]:
一時的な認証情報を使用するため、ここでは入力しません。 - AWS Secret Access Key [None]:
同様に、入力しません。 - Default region name [None]:
使用するAWSリージョンを入力します (例:us-west-2
)。 - Default output format [None]:
出力形式を入力します (例:json
またはtext
)。
これらの設定は、初期設定として行いますが、AWS SSOを使用する場合は、これらの設定は上書きされます。
- AWS Access Key ID [None]:
AWS SSO の有効化
AWS SSOを使用するには、まずAWSマネジメントコンソールからサービスを有効にする必要があります。
- AWS マネジメントコンソールにログイン:
AWSアカウントのルートユーザーまたはIAMユーザーとしてログインします。 - AWS SSO コンソールに移動:
検索バーで「SSO」と入力し、AWS SSOコンソールにアクセスします。 - AWS SSO の有効化:
初めてAWS SSOを使用する場合は、「AWS SSOを有効にする」ボタンをクリックして、サービスを有効にします。 -
アイデンティティソースの選択:
AWS SSOで使用するアイデンティティソースを選択します。AWS SSOには、以下のアイデンティティソースを使用できます。- AWS SSO Directory: AWS SSOが提供するディレクトリサービスです。
- Active Directory: 既存のActive Directoryと連携できます。
- 外部IDプロバイダー: SAML 2.0をサポートする外部IDプロバイダー(Okta、Azure ADなど)と連携できます。
ここでは、最も簡単なAWS SSO Directoryを使用することにします。
5. AWS SSO Directoryの設定:
AWS SSO Directoryを選択した場合、ディレクトリ名を入力し、リージョンを選択します。
6. 設定の確認:
設定内容を確認し、「AWS SSOを有効にする」ボタンをクリックします。
3. AWS SSO の設定
AWS SSOを有効にした後、ユーザー、グループ、およびAWSアカウントへのアクセス許可を設定する必要があります。
AWS SSO コンソールの操作
AWS SSOコンソールは、AWS SSOの設定と管理を行うための中心的な場所です。コンソールを使用して、ユーザー、グループ、アプリケーション、およびアクセス許可を管理できます。
アイデンティティソースの設定
AWS SSOのアイデンティティソースは、ユーザーの認証情報を提供する場所です。AWS SSO Directory、Active Directory、または外部IDプロバイダーを選択できます。ここでは、AWS SSO Directoryを使用します。
ユーザーとグループの作成
-
ユーザーの作成:
- AWS SSOコンソールで、「ユーザー」をクリックします。
- 「ユーザーの追加」をクリックします。
- ユーザーの情報を入力します(例: ユーザー名、メールアドレス、名、姓)。
- パスワードを設定します(自動生成またはカスタムパスワード)。
- 「ユーザーの追加」をクリックします。
-
グループの作成:
- AWS SSOコンソールで、「グループ」をクリックします。
- 「グループの追加」をクリックします。
- グループ名を入力します。
- 「グループの追加」をクリックします。
-
ユーザーをグループに追加:
- 作成したグループをクリックします。
- 「ユーザー」タブをクリックします。
- 「ユーザーの追加」をクリックします。
- 追加するユーザーを選択し、「ユーザーの追加」をクリックします。
AWS アカウントへのアクセス許可の割り当て
AWS SSOを使用すると、ユーザーやグループに対して、特定のAWSアカウントへのアクセス許可を割り当てることができます。
-
AWS アカウントの選択:
- AWS SSOコンソールで、「AWS アカウント」をクリックします。
- アクセス許可を割り当てるAWSアカウントを選択します。
-
アクセス許可セットの作成:
- 「アクセス許可セットの作成」をクリックします。
- アクセス許可セットの種類を選択します(例: AWSマネージドポリシー、カスタムポリシー)。
- アクセス許可セットの名前を入力します。
- アクセス許可ポリシーを設定します(例: AdministratorAccess、ReadOnlyAccess)。
- 「アクセス許可セットの作成」をクリックします。
-
ユーザーまたはグループへのアクセス許可の割り当て:
- 作成したアクセス許可セットをクリックします。
- 「割り当て」タブをクリックします。
- 「割り当ての追加」をクリックします。
- 割り当てるユーザーまたはグループを選択します。
- 「割り当て」をクリックします。
4. AWS CLI と AWS SSO の連携
AWS CLIとAWS SSOを連携させることで、コマンドラインからAWSリソースに簡単にアクセスできるようになります。
aws configure sso
コマンド
AWS CLI v2以降では、aws configure sso
コマンドを使用して、AWS SSOとの連携を簡単に行うことができます。
bash
aws configure sso
このコマンドを実行すると、以下の手順で設定が行われます。
-
SSO セッション URL の入力:
SSO session URL [None]:
AWS SSOコンソールから、SSOセッションURLを取得します。コンソールで「設定」→「AWS アカウントへのアクセス」セクションに移動し、「コマンドラインまたはプログラムによるアクセス」の下にあるURLをコピーして入力します。URLはhttps://<your_sso_portal_url>/start
のような形式です。 -
リージョンの確認:
The SSO session URL provided was for the region "us-west-2". Is this region correct? [y/n]:
SSOセッションURLに対応するリージョンが表示されます。正しい場合はy
を入力します。 -
ブラウザでの認証:
“`
A browser window will now be opened to:https://device.sso.us-west-2.amazonaws.com/
“`
ブラウザが自動的に開き、AWS SSOのログインページが表示されます。指示に従ってログインし、アクセスを許可します。 -
プロファイルの選択:
“`
Available roles for AWS account: - AdministratorAccess
- ReadOnlyAccess
Please choose the role you would like to use: [None]
``
AdministratorAccess`)。
アクセス可能なロールが表示されます。使用するロールを選択します(例:
-
プロファイル名の設定:
The only AWS account available to you is <account_id>.
Using the account ID <account_id> as the profile name.
To use this profile, specify the profile name using --profile, such as:
aws s3 ls --profile <account_id>
プロファイル名が自動的に設定されます。通常、AWSアカウントIDがプロファイル名として使用されます。
プロファイルの作成と設定
aws configure sso
コマンドを実行すると、AWS CLIの設定ファイル(~/.aws/config
および~/.aws/credentials
)が自動的に更新されます。設定ファイルには、プロファイルの情報、SSOセッション、および認証情報が保存されます。
~/.aws/config
ファイルの例:
ini
[profile <account_id>]
sso_start_url = https://<your_sso_portal_url>/start
sso_region = us-west-2
sso_account_id = <account_id>
sso_role_name = AdministratorAccess
region = us-west-2
output = json
~/.aws/credentials
ファイルの例:
ini
[sso]
sso_start_url = https://<your_sso_portal_url>/start
sso_region = us-west-2
sso_account_id = <account_id>
sso_role_name = AdministratorAccess
セッションの開始と認証情報の取得
aws configure sso
コマンドを実行すると、セッションが自動的に開始されます。しかし、必要に応じて、aws sso login
コマンドを使用してセッションを明示的に開始することもできます。
bash
aws sso login --profile <account_id>
このコマンドを実行すると、ブラウザが開き、認証が求められます。認証が成功すると、一時的な認証情報が取得され、AWS CLIで使用できるようになります。
5. AWS CLI の利用
AWS SSOとAWS CLIの連携が完了すると、コマンドラインからAWSリソースにアクセスできるようになります。
認証情報の確認
認証情報が正しく設定されていることを確認するために、以下のコマンドを実行します。
bash
aws sts get-caller-identity --profile <account_id>
このコマンドは、現在の認証情報を使用して、AWSアカウントID、ユーザーID、およびARNを表示します。正しく設定されている場合、期待される情報が表示されます。
AWS リソースへのアクセス
認証情報が設定されている場合、AWS CLIを使用してAWSリソースにアクセスできます。例えば、S3バケットの一覧を表示するには、以下のコマンドを実行します。
bash
aws s3 ls --profile <account_id>
このコマンドは、指定されたプロファイルを使用して、S3バケットの一覧を表示します。同様に、他のAWSサービスにもアクセスできます。
複数のプロファイルの管理
複数のAWSアカウントやロールを使用する場合は、複数のプロファイルを設定できます。aws configure sso
コマンドを複数回実行し、それぞれ異なるプロファイル名を設定することで、複数のプロファイルを管理できます。
プロファイルを切り替えるには、--profile
オプションを使用して、使用するプロファイルを指定します。
bash
aws s3 ls --profile <account_id_1> # アカウントID 1 のプロファイルを使用
aws ec2 describe-instances --profile <account_id_2> # アカウントID 2 のプロファイルを使用
6. トラブルシューティング
AWS SSOとAWS CLIの連携中に問題が発生した場合、以下のトラブルシューティング手順を参考にしてください。
よくあるエラーとその解決策
- 認証情報の有効期限切れ:
認証情報は一時的なものであり、有効期限があります。認証情報の有効期限が切れた場合は、aws sso login
コマンドを再度実行して、新しい認証情報を取得します。 - アクセス許可の問題:
アクセスしようとしているリソースに対するアクセス許可がない場合、エラーメッセージが表示されます。アクセス許可セットを確認し、必要なアクセス許可が割り当てられていることを確認します。 aws configure sso
コマンドが見つからない:
AWS CLI v2以降を使用していることを確認してください。古いバージョンのAWS CLIでは、aws configure sso
コマンドは利用できません。- ブラウザが自動的に開かない:
ブラウザが自動的に開かない場合は、コマンドラインに表示されたURLを手動でコピーして、ブラウザで開いてください。 - SSOセッションURLが無効:
AWS SSOコンソールから正しいSSOセッションURLを取得していることを確認してください。URLが正しくない場合、認証に失敗します。
認証情報の有効期限切れ
AWS SSOで取得した認証情報は一時的なものであり、一定時間後に有効期限が切れます。認証情報の有効期限が切れた場合、AWS CLIを使用しようとするとエラーが発生します。
この問題を解決するには、以下の手順を実行します。
aws sso login
コマンドを再度実行します。
bash
aws sso login --profile <account_id>- ブラウザで認証を行い、新しい認証情報を取得します。
アクセス許可の問題
アクセスしようとしているAWSリソースに対するアクセス許可がない場合、AWS CLIはエラーメッセージを表示します。
この問題を解決するには、以下の手順を実行します。
- AWS SSOコンソールで、該当するユーザーまたはグループに割り当てられているアクセス許可セットを確認します。
- アクセス許可セットに必要なアクセス許可が含まれていることを確認します。
- 必要に応じて、アクセス許可セットを修正し、必要なアクセス許可を追加します。
7. ベストプラクティス
AWS SSOとAWS CLIを安全かつ効率的に利用するためのベストプラクティスを紹介します。
セキュリティの強化
- 多要素認証 (MFA) の有効化:
AWS SSOで多要素認証を有効にすることで、セキュリティを大幅に向上させることができます。MFAを有効にすると、ユーザーはパスワードに加えて、SMS、認証アプリ、またはハードウェアトークンなどの別の認証要素を提供する必要があります。 - 最小権限の原則:
ユーザーやグループには、必要な最小限のアクセス許可のみを割り当てるようにします。過剰なアクセス許可を割り当てると、セキュリティリスクが高まります。 - 定期的な監査:
AWS SSOのアクセスログを定期的に監査し、不正なアクセスや異常なアクティビティを検出します。
ロールの利用
AWS SSOでは、ロールを使用してAWSリソースへのアクセス許可を管理できます。ロールを使用すると、IAMユーザーを作成する必要がなくなり、セキュリティが向上します。
- AWSマネージドポリシーの利用:
AWSが提供するマネージドポリシーを利用することで、一般的なアクセス許可を簡単に割り当てることができます。 - カスタムポリシーの作成:
特定の要件に合わせてカスタムポリシーを作成することで、より詳細なアクセス許可を管理できます。
環境変数との連携
AWS CLIは、環境変数を使用して認証情報や設定を管理できます。環境変数を使用すると、コマンドラインオプションを指定する必要がなくなり、スクリプトや自動化が容易になります。
- AWS_PROFILE:
使用するプロファイル名を指定します。
bash
export AWS_PROFILE=<account_id> - AWS_REGION:
使用するAWSリージョンを指定します。
bash
export AWS_REGION=us-west-2
8. まとめ
この記事では、AWS SSOとAWS CLIを連携させる方法について詳しく解説しました。AWS SSOを使用すると、複数のAWSアカウントへのアクセスを一元的に管理でき、セキュリティを向上させることができます。aws configure sso
コマンドを使用すると、AWS CLIとAWS SSOの連携を簡単に行うことができ、コマンドラインからAWSリソースに簡単にアクセスできるようになります。
AWS SSOを効果的に利用するためには、セキュリティの強化、ロールの利用、および環境変数との連携などのベストプラクティスに従うことが重要です。
このガイドが、AWS SSOとAWS CLIの連携をスムーズに行い、AWS環境の管理を効率化するのに役立つことを願っています。
上記が約5000語の、コマンドラインでAWS SSOとaws configure
を連携させる詳細な説明を含む記事です。この記事は、AWS SSOの概要から設定、CLIとの連携、トラブルシューティング、ベストプラクティスまで網羅的に解説しており、読者がAWS SSOを効果的に利用するための知識とスキルを習得できるようになっています。