IAM の管理方法 - AWS Identity and Access Management

IAM の管理方法

AWS 環境内での AWS Identity and Access Management の管理には、さまざまなツールやインターフェイスの活用が含まれます。最も一般的な方法は、ユーザーとロールの作成からアクセス許可の設定まで、幅広い IAM 管理タスクを実行できるようにするウェブベースのインターフェイスである AWS Management Console を使用することです。

コマンドラインインターフェイスを好むユーザー向けに、AWS には、AWS Command Line Interface と AWS Tools for Windows PowerShell の 2 つのコマンドラインツールセットが用意されています。これにより、IAM 関連のコマンドをターミナルから直接発行でき、コンソールを操作するよりも効率的です。さらに、AWS CloudShell では、コンソールのサインインに関連付けられたアクセス許可を使用して、ウェブブラウザから直接 CLI または SDK コマンドを実行できます。

コンソールとコマンドライン以外にも、AWS はさまざまなプログラミング言語用の Software Development Kit (SDK) を提供しており、IAM 管理機能をアプリケーションに直接統合できます。また、サービスに HTTPS リクエストを直接発行できる IAM Query API を使用して、プログラムにより IAM にアクセスできます。これらのさまざまな管理アプローチを活用することで、既存のワークフローやプロセスに IAM を柔軟に組み込むことができます。

AWS Management Console を使用する

コンソールは IAM および AWS リソースを管理するためのブラウザーベースのインターフェイスです。コンソールから IAM にアクセスする方法の詳細については、AWS サインイン ユーザーガイドの「AWS へサインイン方法」を参照してください。

AWS コンソール

AWS 管理コンソールは、AWS リソースを管理するためのサービスコンソールの広範なコレクションで構成され、そのコレクションを参照するウェブアプリケーションです。最初にサインインすると、コンソールのホームページが表示されます。各サービスコンソールにアクセスできるホームページは、AWS に関連するタスクを実行するための情報にアクセスするための単一の場所として機能します。コンソールにサインインした後に、どのサービスとアプリケーションを利用できるようになるかは、アクセス権限を持っている AWS リソースによって異なります。リソースへのアクセス許可は、ロールを引き受けるか、権限を付与されたグループのメンバーになるか、明示的に権限を付与されるかのいずれかによって付与されます。スタンドアロン AWS アカウントでは、ルートユーザーまたは IAM 管理者がリソースへのアクセスを設定します。AWS Organizations では、管理アカウントまたは委任管理者がリソースへのアクセスを設定します。

AWS Management Console を使用して AWS リソースを管理する予定の場合は、セキュリティ上のベストプラクティスとして、一時的な認証情報を使用してユーザーを設定することをおすすめします。ロールを引き受けた IAM ユーザー、フェデレーションユーザー、IAM Identity Center のユーザーには一時的な認証情報があり、IAM ユーザーとルートユーザーには長期的な認証情報があります。ルートユーザーの認証情報は AWS アカウント へのフルアクセスを提供し、他のユーザーは IAM ポリシーによって付与されたリソースへのアクセスを提供する認証情報を持っています。

サインインの操作は、AWS Management Console ユーザーのタイプによって異なります。

  • IAM ユーザーとルートユーザーは、メインの AWS サインイン URL (https://signin.aws.amazon.com) からサインインします。サインインすると、権限が付与されているアカウントのリソースにアクセスできるようになります。

    ルートユーザーとしてサインインするには、ルートユーザーのメールアドレスとパスワードが必要です。

    IAM ユーザーとしてサインインするには、AWS アカウント 番号またはエイリアス、IAM ユーザー名、IAM ユーザーパスワードが必要です。

    アカウント内の IAM ユーザーは、緊急アクセスなど、長期的な認証情報を必要とする特定の状況に限定し、ルートユーザーはルートユーザーの認証情報を必要とするタスクにのみ使用することをおすすめします。

    利便性のため、AWS サインインページはブラウザ cookie を使用して IAM ユーザー名とアカウント情報を記憶します。次回、ユーザーが任意のページに移動したとき、AWS Management Console コンソールは Cookie を使用して、ユーザーをアカウントのサインインページにリダイレクトします。

    セッションが終了したらコンソールからサインアウトして、前回のサインインが再利用されないようにします。

  • IAM Identity Center ユーザーは、組織固有の特定の AWS アクセスポータルを使用してサインインします。サインインすると、アクセスするアカウントまたはアプリケーションを選択できます。アカウントにアクセスする場合は、管理セッションに使用するアクセス許可セットを選択します。

  • 外部 ID プロバイダーで管理されているフェデレーションユーザーは、カスタムのエンタープライズアクセスポータルを使用して AWS アカウント サインインにリンクされています。フェデレーションユーザーが利用できる AWS リソースは、組織が選択したポリシーによって異なります。

注記

セキュリティレベルを高めるために、ルートユーザー、IAM ユーザー、IAM Identity Center のユーザーは、AWS リソースへのアクセスを許可する前に AWS による多要素認証 (MFA) の検証を受けることができます。MFA が有効になっている場合は、サインインするために MFA デバイスへのアクセス権も必要となります。

さまざまなユーザーが管理コンソールにサインインする方法について詳しくは、AWS サインインユーザーガイドの「AWS 管理コンソールへのサインイン」を参照してください。

AWS コマンドラインツール

AWS コマンドラインツールを使用して、システムのコマンドラインでコマンドを発行することで、 IAM および AWS タスクを実行できます。コマンドラインを使用すると、コンソールよりも高速で便利になります。コマンドラインツールは、AWS のタスクを実行するスクリプトを作成する場合にも便利です。

AWS には、AWS Command Line Interface (AWS CLI) とAWS Tools for Windows PowerShellという 2 セットのコマンドラインツールが用意されています。AWS CLI のインストールおよび使用の方法については、AWS Command Line Interface ユーザーガイドを参照してください。Tools for Windows PowerShell のインストールおよび使用の方法については、AWS Tools for Windows PowerShellユーザーガイドを参照してください。

コンソールにサインインすると、ブラウザから AWS CloudShell を使用して CLI または SDK コマンドを実行できます。AWS リソースにアクセスするためのアクセス許可は、コンソールへのサインインに使用した認証情報に基づいています。経験によっては、CLI の方がより効率的な AWS アカウント の管理方法である場合があります。詳細については、「AWS CloudShell を使用した AWS Identity and Access Management との連携」を参照してください。

AWS コマンドラインインターフェイス (CLI) と Software Development Kit (SDK)

IAM Identity Center と IAM ユーザーは、CLI または関連する SDK のアプリケーションインターフェイス (API) を使用して認証を行う場合、異なる方法を使用して認証情報を認証します。

認証情報と構成設定は、システム環境変数、ユーザー環境変数、ローカルの AWS 設定ファイルなど複数の場所にあり、コマンドラインでパラメータとして明示的に宣言される場合もあります。特定の場所が他の場所よりも優先されます。

IAM Identity Center と IAM はどちらも CLI または SDK で使用できるアクセスキーを提供します。IAM Identity Center アクセスキーは、自動的に更新できる一時的な認証情報であり、IAM ユーザーに関連する長期的なアクセスキーよりも推奨されます。

CLI または SDK を使用して AWS アカウント を管理するには、ブラウザから AWS CloudShell を使用できます。CloudShell を使用して CLI または SDK コマンドを実行する場合は、まずコンソールにサインインする必要があります。AWS リソースにアクセスするためのアクセス許可は、コンソールへのサインインに使用した認証情報に基づいています。経験によっては、CLI の方がより効率的な AWS アカウント の管理方法である場合があります。

アプリケーション開発では、CLI または SDK をコンピューターにダウンロードし、コマンドプロンプトまたは Docker ウィンドウからサインインできます。このシナリオでは、CLI スクリプトまたは SDK アプリケーションの一部として認証情報とアクセス認証情報を設定します。環境と利用可能なアクセス許可に応じて、リソースへのプログラムによるアクセスはさまざまな方法で設定できます。

  • AWS サービスを使用してローカルコードを認証するための推奨オプションは、IAM ID センターと IAM Roles Anywhere です。

  • AWS 環境内で実行されるコードを認証するための推奨オプションは、IAM ロールを使用するか、IAM Identity Center 認証情報を使用することです。

AWS アクセスポータルを使用してサインインする場合、アクセス許可セットを選択する場所のスタートページから短期的な認証情報を取得できます。これらの認証情報には有効期限が定義されており、自動的に更新されることはありません。これらの認証情報を使用する場合は、AWS ポータルにサインインした後に、AWS アカウント を選択し、権限セットを選択します。[コマンドラインまたはプログラムによるアクセス] を選択すると、プログラムまたは CLI から AWS リソースにアクセスするために使用できるオプションが表示されます。これらの方法の詳細については、IAM Identity Center ユーザーガイドの「一時的な認証情報の取得と更新」を参照してください。これらの認証情報は、アプリケーションの開発中にコードをすばやくテストするためによく使用されます。

AWS リソースへのアクセスを自動化すると自動的に更新される IAM Identity Center 認証情報を使用することをお勧めします。IAM Identity Center でユーザーと権限セットを設定している場合、aws configure sso コマンドを使ってコマンドラインウィザードを使用すると、利用可能な認証情報を特定してプロファイルに保存できます。プロファイルの設定について詳しくは、バージョン 2 用 AWS コマンドラインインターフェイスユーザーガイドの「aws configure sso ウィザードによるプロファイルの設定」を参照してください。

注記

多くのサンプルアプリケーションでは、IAM ユーザーまたはルートユーザーに関連する長期アクセスキーを使用しています。長期的な認証情報は、学習演習の一環としてサンドボックス環境内でのみ使用してください。長期的なアクセスキーの代替手段を確認し、コードをできるだけ早く移行することで、IAM Identity Center 認証情報や IAM ロールなどの代替認証情報を使用するようにすることを計画してください。コードを移行したら、アクセスキーを削除します。

CLI の設定の詳細については、AWS コマンドラインインターフェイス (バージョン 2) ユーザーガイドの「AWS CLI の最新バージョンをインストールまたは更新する」および、AWS コマンドラインインターフェイスユーザーガイドの「認証とアクセス認証情報」を参照してください。

SDK の設定について詳しくは、AWS SDK とツールリファレンスガイドの「IAM Identity Center 認証」および、AWS SDK とツールリファレンスガイドの「IAM Roles Anywhere」を参照してください。

AWS SDK の使用

AWS には、さまざまなプログラミング言語およびプラットフォーム (Java、Python、Ruby、.NET、iOS、Android など) のライブラリとサンプルコードで構成された SDK (ソフトウェア開発キット) が用意されています。SDK は、IAM や AWS へのプログラムによるアクセス権限を作成する際に役立ちます。例えば、SDK は要求への暗号を使用した署名、エラーの管理、要求の自動的な再試行などのタスクを処理します。AWS SDK のダウンロードやインストールなどの詳細については、「Amazon Web Services のツール」ページを参照してください。

IAM クエリ API の使用

サービスに HTTPS リクエストを直接発行できる IAM Query API を使用して、プログラムにより IAM と AWS にアクセスできます。Query API を使用する場合は、認証情報を使用してリクエストにデジタル署名するコードを含める必要があります。詳細については、「HTTP クエリリクエストを使用した IAM API の呼び出し および IAM API リファレンス」を参照してください。