AWS Startup ブログ

え、IAM ユーザーを作らなくてもマネジメントコンソールにログインできるの!? – シングルサインオン考え方編

みなさん、こんにちは。ソリューションアーキテクトの稲田(@inariku)です。

今回はセキュリティのお話です。近頃、ビジネスの成長にあわせて、セキュリティの重要性が増してきたスタートアップのお客様からよく「IAM ユーザーの管理の手間が増えてきた。IAM ユーザーの管理で抜け漏れが出そうで怖くなってきた。」などのお声を聞くことが増えてきました。

一般に、アカウント管理を効率化する観点で考えると、IAM ユーザーを作らないことが有効なプラクティスです。しかし、「IAM ユーザーを作らないとマネジメントコンソールに入れないんじゃ..」「AWS CLI が使えないんじゃ..」などと思われた方もいらっしゃると思います。では、どのようにすればよいのでしょうか。 今回は IAM ユーザーを利用しない場合の認証の仕方について解説していきます。

IAM ユーザーの管理出来ていますか?

IAM ユーザーの管理方法を紹介する前に、IAM ユーザーを使うケースは主に何があるでしょうか。そして、なぜ管理する必要があるのでしょうか。まずこれらについて整理します。

IAM ユーザーを使うケースは主に2つ存在します。1つは AWS SDK を使ったAPI へのアクセスなどマシンが使うケース、もう1つはマネジメントコンソールへのログインのように人が使うケースです。スタートアップのお客様では、特に後者のケースで管理が大変になってきたというお声を聞きます。なぜかというと、IAM ユーザーの管理は入退社や業務委託契約と連動して行うことが多く、またその権限管理も社内の体制変更に合わせて行うことが多いため、組織が拡大するのに合わせて管理運用の負荷が高まる傾向があるからです。これは AWS に限らず他の Webサービス・SaaS においても同様で、それぞれのサービスでログインユーザーを作成すると、それぞれのサービス上でユーザーの管理が発生します。みなさんも社員の退職時や異動時にユーザーの削除や権限の変更を忘れて、後に気づいたことがあるのではないでしょうか。(AWS 環境内において、サーバーの環境変数やソースコードにアクセスキーを設定して利用している場合は IAM ロールを使用して下さい。)

これらを踏まえた上で、みなさんの環境ではどのように IAM ユーザーの管理を行っていますか?もしかしたら上記のような管理をしている方もいるのではないでしょうか。安心してください、これからよくある管理方法と課題について紹介した後、ユーザーの管理の負担を減らす方法(シングルサインオン)について解説していきます。

IAM ユーザーのよくある管理方法と課題

まず、人がアクセスする際に使用する IAM ユーザーの管理方法として開発者、AWS アカウントごとに IAM ユーザーを作成する方法があります。この場合、開発者は各 AWS アカウントに、それぞれで作成した IAM ユーザーでログインすることになります。開発者、AWS アカウントが少ない場合は、ログインする際に必要なパスワードの保管やアクセスキーのローテーションなどの管理負荷は大きくはないですが、規模の拡大につれて管理が困難になります。

その他の管理方法として、管理 AWS アカウントとその中に開発者ごとの IAM ユーザーを作成し、 スイッチロールという機能を利用してその他のアカウントにアクセスする方法もあります。

しかし、依然としてそれぞれの AWS アカウントに対応する IAM ロールの作成および管理の手間があります。そこで、これらの問題を解決する方法として登場するのがシングルサインオンです。

AWS アカウントにおけるシングルサインオン

シングルサインオンとは、1度システム利用開始のユーザー認証 (ログイン) を行うと、複数のシステムを利用開始する際に、都度認証を行う必要がない仕組みを指します。AWS では SAML2.0 を用いた ID フェデレーションをサポートしています。これにより、自社の開発者は自社の ID 管理の基盤(例えば Okta や Active Directory 、Google Workspace など)上の自身の ID を用いて AWS の各サービスを利用することが可能になります。この自社の ID 管理の基盤のことを ID プロバイダー(IdP)と呼びます。

AWS Single Sign-On とは?

AWS Single Sign-On(SSO)は、複数の AWS アカウントとビジネスアプリケーションへのシングルサインオンを提供するマネージドサービスです。AWS SSO を使用すると、AWS Organizations と統合されたアクセス権限管理、SAML 対応のビジネスアプリケーション、カスタム構築された社内開発アプリケーションへのアクセス権の割り当ての一元管理が可能となります。これによって、社員は複数の認証情報を覚えたり、ビジネスアプリケーションごとに URL にアクセスする必要がなくなります。また、AWS CloudTrail と統合されているため、サインインアクティビティのモニタリングと監査を一元的に実行可能となります。

AWS SSO の機能の1つにアクセス権限セットというものがあります。 アクセス権限セットを使うことで ユーザーごとのアクセス権限を AWS SSO の画面で一元管理することが可能となります。この機能を利用することで各 AWS アカウントにログインせずにそれぞれの AWS アカウント内に IAM ロールを作成することが可能となります。

最後に、これからお客様にやって頂きたいステップを紹介します。

AWS アカウントでのシングルサインオンへのステップ

多くのお客様は AWS 以外の 3rd Party サービスも利用していると思います。例えば、Slack などのコミュニケーションツールです。それらを含めて、現状のユーザー管理方法について整理し、シングルサインオンによる統合の可否について確認してみてはいかがでしょうか。実際にシングルサインオンを導入する場合には IdP や アイデンティティストアの選定など考慮する点がいくつかあります。本記事ではこれらの詳細については割愛しますが、「え、IAM ユーザーを作らなくてもマネジメントコンソールにログインできるの!? -シングルサインオン実践編-」を参照頂ければと思います。

おわりに

お客様のユーザー管理の負担を減らす方法としてシングルサインオンを紹介しました。今回は触れていませんが、複数の AWS アカウント(マルチアカウント)を運用する際もシングルサインオンの考え方は重要になってきます。是非本ブログを読み終わった後に、「スタートアップにおけるマルチアカウントの考え方と AWS Control Tower のすゝめ」も合わせて確認していただけると幸いです。そして本記事を読んでみて「社員数が少ないからまだいいかな」と思った方もシングルサインオンはメリットが大きく無料で導入可能なので是非導入を検討してみてください。ユーザー管理の効率化を通してセキュリティやガバナンスの向上につながれば幸いです。

このブログの著者

稲田 大陸(Riku Inada)@inariku

2021 年 4 月に AWS Japan に入社し、一人前の SA になるための修行中。
好きな AWS のサービスは AWS AmplifyAmazon CDK 。趣味は筋トレ。