type
status
date
slug
summary
tags
category
icon
password

理論

AWSにおけるユーザー認証とアクセス管理の基本

クラウド環境でユーザー認証とアクセス管理は非常に重要です。AWSでは、ユーザーがどのようにAWSリソースにアクセスできるかを管理するために、いくつかのツールとサービスを提供しています。

1. AWS IAM(Identity and Access Management)とは?

AWS IAMは、AWSクラウドリソースへのアクセスを管理するためのサービスです。IAMを使うことで、どのユーザーやサービスがどのリソースにアクセスできるかを制御できます。IAMを活用することで、セキュリティを保ちながら、ユーザーやアプリケーションのアクセスをきめ細かく管理することができます。

主な機能:

  • ユーザーの管理: 会社の従業員やサービスに対して、AWSリソースへのアクセスを許可したり、制限したりします。
  • ポリシーの設定: どのリソースにアクセスできるかを定義するポリシー(JSON形式)を使ってアクセス権限を管理します。
  • ロールの設定: 特定の権限を一時的に付与するためのロールを設定し、サービスやユーザーに割り当てることができます。

2. IAMのアクセス管理方法

AWSでは、アクセス管理を行うために主に以下の3つの方法を利用します。

① ユーザー

ユーザーは、AWSリソースにアクセスする個々のエンティティです。IAMユーザーは、AWSアカウント内で認証されるために使用され、各ユーザーには固有のアクセス権限が設定されます。

② グループ

複数のIAMユーザーに同じ権限を一度に付与したい場合に使うのがIAMグループです。例えば、「開発チーム」や「マーケティングチーム」など、共通の役割を持つユーザーをグループにまとめ、そのグループにアクセス権を設定します。

③ ロール

ロールは、特定の権限を持った一時的な「役割」を定義するものです。IAMロールはユーザーやサービスが一時的にその権限を取得するために使用され、通常はAWSサービス間のアクセスに利用されます。

3. IAM機能-SAML 2.0とOpenID Connect (OIDC)

多くの企業では、AWSのようなクラウドサービスにアクセスする際に、シングルサインオン(SSO)を活用しています。SSOを使うと、ユーザーは一度のログインで複数のサービスにアクセスできるため、便利で安全です。
  • SAML 2.0: SAML(Security Assertion Markup Language)は、ユーザー認証情報を安全にやり取りするための標準的なプロトコルです。企業のオンプレミスシステム(例えばActive Directory)とAWSを統合して、AWSにアクセスするための認証を一元管理できます。
  • OpenID Connect (OIDC): OIDCは、主にウェブアプリケーションで使用される認証プロトコルで、GoogleやFacebookなどのサービスとも連携できます。AWSはOIDCをサポートしており、外部のIDプロバイダーを使ってAWSリソースへのアクセスを管理することができます。

4. AWS IAM Identity Center(AWS SSO)

  • AWS IAM Identity Center(AWS Single Sign-On)は、複数のAWSアカウントに対してシングルサインオン(SSO)を設定するためのサービスです。これを使うことで、ユーザーはAWSアカウントに個別にサインインする必要なく、1つのログインで複数のAWSサービスにアクセスできるようになります。
  • SCIM(System for Cross-domain Identity Management): AWS SSOはSCIMをサポートしており、これを使うとユーザー情報の自動プロビジョニング(新しいユーザーの追加や削除)が可能になります。例えば、Active Directoryに新しいユーザーを追加した際、AWS SSOにも自動的にその情報が反映されます。
  • 属性ベースアクセス制御(ABAC): ABACは、ユーザーの属性(役職や部門など)に基づいてアクセス権限を決定する方法です。これにより、ユーザーがどのリソースにアクセスできるかを柔軟に設定できます。

5. クロスアカウントアクセス

AWSでは、複数のアカウントにまたがってアクセス権を設定することもあります。例えば、異なる部署やプロジェクトで異なるAWSアカウントを使用している場合に、クロスアカウントアクセスを設定することで、他のアカウントに対してアクセスを許可できます。
クロスアカウントアクセスは、特に大規模な企業や組織にとって便利で、安全に複数のアカウントをまたいでリソースを管理できます。

6. AWSリソースへのアクセス管理のベストプラクティス

  • 最小権限の原則: ユーザーやサービスに必要最低限の権限だけを付与することで、セキュリティを強化します。
  • 定期的なアクセスレビュー: 定期的にアクセス権限を見直し、不要な権限を削除することで、セキュリティを維持します。
  • ロールを活用: 必要に応じてIAMロールを使い、最小限の権限で一時的にアクセスを許可します。

結論

AWSにおけるユーザー認証とアクセス管理は、企業のセキュリティにとって非常に重要です。IAMを活用してアクセスを管理し、シングルサインオン(SSO)やクロスアカウントアクセスなどの機能を使うことで、安全かつ効率的にAWSリソースを管理することができます。適切な認証プロトコルやポリシー設定を活用し、最小権限の原則に基づいてアクセスを管理することが、セキュアなクラウド環境の維持に繋がります。

実践

参照元:
 

IAM Identity Centerを使って複数アカウント管理する。(その1:IAM Identity Centerでのログイン)

IAM Identity Centerは、AWS Single Sign-Onの後継サービスで、AWS Organizationsを利用して複数アカウントを一元管理し、簡単にログイン操作を行えるようにするツールです。

特徴

  • AWS Organizations必須: IAM Identity CenterはAWS Organizationsが前提。
  • 簡単な設定: 複雑な認証連携なしで、シンプルな構成の環境なら容易に導入可能。
  • 利便性向上: ポータル画面から各アカウントに直接ログイン可能。スイッチロールやログインページの切り替えが不要。

メリット

IAM Identity Centerを使えば、複数アカウントを効率的に管理し、ログイン操作を簡略化できます。AWS Organizationsを使用している環境であれば、導入を検討する価値があります。

IAM Identity Centerの構成

AWS Organizationsで複数のアカウントを管理している場合、IAM Identity Centerを導入すると次のようなメリットがあります:
  • 統一ポータルからのログイン: 各アカウントのログインページやスイッチロールを利用せず、IAM Identity Centerの専用ポータル画面から、直接複数のアカウントに簡単にアクセス可能。
  • 効率化: アカウントごとの手動操作を省略し、スムーズな運用管理が実現。
notion image
 
 

IAM Identity Centerの設定

以下より実際にIAM Identity Centerの設定を行っていきます。

IAM Identity Centerの有効化

ルートアカウントにてIAM Identity Centerの画面から「有効にする」を選択するだけで有効化できます。
notion image

多要素認証の設定

IAM Identity Centerの「設定」 →「認証」→「多要素認証」の「設定」より多要素認証(MFA)の設定が行えます。
IAM Identity Center全体の設定となるため、ユーザごとに設定を変更することはできませんが、以下のようにサインイン時にMFA登録を要求することができるので、AWS OrganizationsSCPやIAMロールで権限設定せずとも、簡単にログインユーザ全員にMFAを強制できるため、全体の統制を取るためにも有用です。
今回は以下のように「サインイン時にMFAデバイスを登録するよう要求する」を選択し、MFAを強制しようと思います。
notion image

ユーザとグループの作成

IAM Identity Centerのユーザ・グループを作成していきます。
IAM Identity Centerのユーザ・グループは、各アカウントで作成するIAMユーザ・グループとは異なるため、IAM Identity Centerでユーザ・グループを作成しても、各アカウント側にはIAMユーザ・グループは作成されません。
接続構成としてはIAM Identity Centerから各アカウントに内部的にスイッチロールで接続することで、各アカウント側にはユーザ・グループの作成は行われず、IAM Identity Centerで集中管理できるようになっているようです。
IAM Identity Center」→「ユーザー」の「ユーザーを追加」からユーザを登録します。
notion image
ユーザの作成は、以下の項目が必須項目となるため、各ユーザごとにそれぞれ登録を行います。
また、必須項目以外にも、「お問い合わせ方法」、「ジョブ関連情報」、「アドレス」、「環境設定」、「追加の属性」をオプションとして登録できるため、必要に応じて登録を行い、「次へ」を選択します。
notion image
 
まだグループを作成していない場合、以下の画面からグループを作成できるので、「グループを作成」を選択して、グループを作成します。
notion image
別タブでグループ作成の画面が開くため、グループ名を指定し、「グループを作成」を選択します。
notion image
グループを作成したら、ユーザ作成画面に戻り、リロードボタンを選択すると作成したグループが表示されるので、グループ名を選択し、「次へ」進みます。
notion image
確認画面で問題なければ「ユーザーを追加」でユーザ作成します。
作成後、登録ユーザに以下のようなメールが届くため、「Accept invitation」を選択します。
notion image
Accept invitation」を選択することで、初期パスワード設定画面が開くため、各ユーザ側でパスワード設定してもらいます。
notion image
ちなみに、ユーザ作成時、「このユーザーと共有できるワンタイムパスワードを生成します。」を選択した場合は以下のような画面が表示されます。
notion image
ただし、IAM Identity Centerからのメール検証が必要となるため、その場合はユーザの詳細画面から「Eメール検証リンクを送信」で検証を行います。
notion image

許可セットとは

許可セットは、IAMユーザやグループに割り当てるIAMポリシーと同等の機能を持ちつつ、以下の特徴があります:
  • 複数アカウントに対応: 1つの許可セットで複数アカウントにポリシーを適用可能。各アカウントで個別にポリシーを作成する必要がありません。
  • 複数の許可セット割り当て: ユーザやグループに複数の許可セットを付与可能。
    • 例: 通常はリードオンリー権限、作業時のみフルアクセス権限を使用。
IAMロールと許可セットは似ていますが、用途と管理方法に違いがあります。

主な違い

特徴
IAMロール
許可セット
適用対象
ユーザに割り当て
グループやアカウントに割り当て
ユースケース
特定のサービスやアカウント内リソースへのアクセス許可
AWS Organizations環境で複数アカウントにまたがる簡単な権限付与
操作性
手動でIAMロールをスイッチする必要がある
IAM Identity Centerのポータルから簡単にアカウント切り替えが可能

簡単に言うと:

これにより、権限設定の集約管理が可能となり、設定忘れやミスを防ぎつつ、運用の効率化を図れます。
notion image

許可セットの作成

マルチアカウント許可」→「許可セット」より「許可セットを作成」を選択し、許可セットを設定していきます。
notion image

許可セットのポリシー

許可セットには以下の2種類があります:
  1. AWSマネージドポリシー: 用途ごとに事前定義されたポリシーを選択可能(例: AdministratorAccess)。
  1. カスタム許可セット: 独自のポリシーを細かく作成可能。
今回は、「AdministratorAccess」という事前定義された許可セットを選択して進めます。
notion image
 

許可セットの設定

  • 設定内容: 許可セット名やセッション期間を設定します。
  • リレー状態の設定:
    • リレー状態の設定とは、ユーザがIAM Identity Centerポータルから各AWSアカウントにログインした際、最初に表示される画面を指定する機能です。
    • 通常: AWSマネジメントコンソールのトップ画面に遷移。
    • カスタマイズ: 特定の画面(例: 請求画面)を直接表示したい場合はURLを指定可能。
notion image
後の手順で使おうと思うので、同じように「ReadOnlyAccess」の許可セットも作っておきます。

AWSアカウントとの結びつけ手順

  1. ユーザ・グループ、許可セットの作成
    1. 先に作成済みのユーザ・グループ、許可セットを使用。
  1. 結びつけ手順
      • 「マルチアカウント許可」→「AWSアカウント」を選択。
      • 結びつけたいAWSアカウントを選び、「ユーザーまたはグループを割り当て」をクリック。
これにより、対象ユーザやグループに指定した許可セットを適用できます。
notion image
結びつけるユーザ、またはグループを選択できるので、任意のユーザもしくはグループを選択し、「次へ」を選択します。
notion image
結びつける許可セットを選択します。
notion image
下の画面のあと、確認画面が表示されるため、「送信」を選択することで、ユーザ・グループ、許可セットとAWSアカウントの結びつけができます。
AWSアカウント」の画面に戻ると、どのアカウントにどの許可セットが割り当てられているかが確認できるので、想定の許可セットが割り当てられているかはこちらから確認します。
notion image
 
また、割り当てられたユーザ・グループは、少し分かりづらいですが、「マルチアカウント許可」→「AWSアカウント」→任意のアカウントの詳細画面→「ユーザーとグループ」タブから確認できます。
notion image

MFAデバイスの登録

初期パスワード設定時に送付されたメールアドレスに記載されているURLにアクセスすることでIAM Identity Centerのログイン画面が開きます。
また先程の設定よりMFA登録を要求するようにしていると、以下のようにMFAデバイス登録が促され、登録しないと先に進めないため、全ユーザにMFAを強制することができます。
notion image
 
 

IAM Identity Centerへのログイン手順

  1. MFAデバイス登録後: IAM Identity Centerにログインします。
  1. ポータル画面表示: 各アカウントと許可セットが表示されます。
  1. 操作手順:
      • アクセスしたいアカウントを選択。
      • 許可ポリシーの「Management Console」をクリック。
      • 対象のAWSマネジメントコンソールに遷移。

表示内容

  • 許可セットに基づき、ユーザ・グループごとに表示が異なります。
    • 例: AdministratorAccessやReadOnlyAccessが割り当てられたアカウントのみ表示される。
    • 現在ログインしているユーザーは二つのアカウントに対して指定した許可セットでアクセスできます。
notion image
 

おわりに

今回は、IAM Identity Centerの基本設定からユーザログインまでを解説しました。
これにより、複数アカウントのユーザ・グループ設定やIAMポリシーの管理を効率化でき、スイッチロールによるアカウント間移動が簡素化されることをお伝えしました。
次回は、コマンドライン操作について詳しく解説します。
 
 
 

IAM Identity Centerを使って複数アカウント管理する。(その2:CLIでのアクセスと管理の委任)

はじめに

前回はIAM Identity Centerの基本設定とAWSマネジメントコンソールへのログインまで行ったので、今回はCLIでのアクセス方法とIAM Identity Center管理の委任についてまとめてみようと思います。

CLIアクセスについて

IAM Identity Centerで作成したユーザのCLIアクセスは、期限付きセッショントークンによる認証方式を使用します。
CLIアクセスに必要な情報は、IAM Identity Centerにログイン後、
Command line or programmatic access」を選択することで表示されます。
これにより、以下の利点があります:
  • ユーザごとのクレデンシャル情報を個別に作成・配布する必要がなくなる。
  • クレデンシャル情報の定期的な変更作業が不要になる。
notion image

CLIアクセスの設定方法

各アカウントおよび許可セットで「Command line or programmatic access」を選択すると、以下の情報が表示されます。この情報をコピーして使用できます。
  • 表示される情報
    • アクセスキーID
    • シークレットアクセスキー
    • セッショントークン(期限付き)
これらの情報を使って、次の方法でコマンドを実行できます:
  1. コンソールに貼り付け:直接コマンドラインで使用。
  1. ~/.aws/credentialsに記載:プロファイルを設定し、profileを指定してコマンドを実行。
これにより、選択したアカウントと権限でコマンドが実行できます。
notion image

セッショントークンの保持期間とアクセス方法

  • セッショントークンの保持期間は、許可セットの「セッション期間」から設定できます。デフォルトは1時間で、最長12時間まで延長可能です。
  • 保持期間が満了するとコマンドが失敗し、再度ポータル画面にアクセスして新しいトークン情報をコピーする必要があります。
ただし、ポータルから毎回トークンをコピーするのは手間がかかるため、アクセスキーとシークレットアクセスキーを使った管理に戻る可能性もあります。
そのため、CLIアクセスを効率的に利用する方法も用意されています。

前提条件

  • AWS CLIでIAM Identity Centerを使うためには、AWS CLI v2が必要です
 

aws configure ssoによるトークンの更新

  • ポータル画面からトークン情報を手動でコピーする方法の他に、AWS CLIを使ってトークンを更新する方法もあります。
  • AWSユーザガイドにて紹介されている2種類の方法は、以下の通りです:
      1. 手動更新: トークンが満了した際に手動で更新する方法。
      1. 自動更新(推奨構成): トークンが満了した際に自動で更新される方法。
今回は自動更新(推奨構成)を紹介します。

SSOトークンプロバイダ構成の設定

AWS CLI v2を使用して、aws configure sso コマンドでSSOトークンプロバイダ構成を設定します。

プロファイルの構成

  1. aws configure sso を実行すると、以下の入力項目が表示されます。適切な情報を入力してください。
  1. 注意: AWS CLI v2が古いバージョンの場合、SSO session nameが表示されないことがあります。最新バージョンに更新してください。

入力項目:

  • SSO session name (Recommended): 任意のセッション名
  • SSO start URL: SSOポータルの開始URL(例:https://xxxxxxxxxx.awsapps.com/start#
  • SSO region: リージョン(例: ap-northeast-1
  • SSO registration scopes: 固定値 sso:account:access

設定例:

項目
設定
備考
SSO session name
AdministratorAccessCLI
任意のセッション名
SSO start URL
https://x-xxxxxxxxxx.awsapps.com/start#
ポータル画面からコピーしたURL
SSO region
ap-northeast-1
使用するリージョン
SSO registration scopes
sso:account:access
ユーザガイド通りの固定値
入力が完了した後、AWS CLIがインターネットブラウザを開いてSSO認証画面を表示します。そこで「Allow」を選択して認証を完了させます。
notion image
 
インターネットブラウザが開けない場合は、AWS CLIのコマンド結果で表示されている以下のURLにアクセスし、記載されているコードを入力することで関連付けます。
notion image
AWS CLIに戻ると関連付けられているアカウントが対話式で選択できるようになるため、上下ボタンでアクセスしたいアカウントを選択してEnterを押します。
続いて関連付けられている許可セットの選択を行います。
デフォルトリージョン、アウトプットフォーマット、任意のプロファイル名の指定を行い実行。
aws configure ssoコマンドの設定完了後、~/.aws/configに以下のような設定情報が作成されます。
上記設定後に表示される実行例のように、--profile [CLIプロファイル名]を指定することで、指定したプロファイルの権限でコマンドを実行できます。
コマンド実行例
他のアカウント用プロファイルへの切り替え方法は、以下のように--profileオプションを使用します。
  1. プロファイル切り替えコマンド:
    1. 複数プロファイル作成:
      これにより、IAM Identity Centerで設定したプロファイルを切り替えて使用できます。
       

      実運用時のプロファイル構成例

      実際に、2つの方法を使った例を挙げてみましょう。
      notion image
      notion image

      1. -profileオプションを毎回指定する方法

      この方法では、AWS CLIで実行するたびに--profileオプションを使って接続先アカウントを指定します。

      例:

      1. プロファイルAでS3バケットを一覧表示
        1. プロファイルBでEC2インスタンスを確認
          ここでは、毎回--profileを指定しなければならず、複数のアカウントを切り替えるたびに手動でオプションを変更する必要があります。

          2. 作業用CLIプロファイルを設定し、aws configure ssoで切り替える方法

          この方法では、一度作業用CLIプロファイルを設定しておけば、その後は簡単にアカウントを切り替えることができます。

          ステップ:

          1. 作業用プロファイルの設定:
            1. これにより、作業用プロファイルが設定され、アカウントを選択するためのプロンプトが表示されます。
          1. プロンプトでアカウントを選択: プロンプトが開き、矢印キーを使って接続したいアカウントを選択し、Enterを押します。
          1. アカウント切り替え後、再度aws configure ssoで切り替え:
            1. このコマンドを実行するだけで、再度簡単にアカウントを切り替えることができます。--profileオプションを毎回指定する手間が省けます。

          結果:

          • 最初に作業用プロファイルを設定しておくと、後は簡単にアカウント間の切り替えが可能で、複数のアカウントで操作する際の効率が良くなります。
          セッショントークンの期限が切れた場合、以下のコマンドでアクセスを再開できます。
          1. トークンの更新
              • インターネットブラウザで認証を行い、新しいトークンが取得されます。
          1. 明示的にログアウト
              • ログアウトし、クライアント側のキャッシュされているトークン情報も削除されます。
          IAM Identity Centerの管理の委任
          • IAM Identity Centerはデフォルトでルートアカウントで管理されますが、ベストプラクティスではルートアカウントでの管理は最小限にすることが推奨されます。
          • 他のメンバーアカウントに管理権限を委任することができ、ルートアカウントの使用を制限することができます。
          • 委任設定により、セキュリティを向上させ、運用効率を高めることができます。

          委任の設定

          委任の設定自体は非常に簡単で、「IAM Identity Center」の「設定」→「管理」タブの「アカウントを登録」から行います。
          notion image
          委任するメンバーアカウント選択画面が表示されるため、委任するメンバーアカウントを選択して、「アカウントを登録」を実行することでIAM Identity Centerの管理を委任することができます。
          notion image
           
          上記画面の注意書きにも記載されている通り、ルートアカウントに対する許可セットの管理やIAM Identity Center自体の削除などは、今まで通りルートアカウントで行う必要がありますが、委任することでルートアカウントからIAM Identity Centerの管理を分離することができます。
          おわりに
          • 今回はCLIでのアクセス方法とIAM Identity Centerの管理委任方法について説明しました。
          • セッショントークンの再認証手間はありますが、永続的なアクセスキーを配布せずにアクセスできる点は管理者にとって大きなメリットです。
          • IAM Identity Centerの委任により、役割が明確になり、アカウント数が多いシステムではユーザ管理用アカウントを用意するのも効果的です。
          • 次回は外部AWSアカウントに対してIAM Identity CenterからSAMLアクセスを行う方法を試す予定です。
           

          IAM Identity Centerを使って複数アカウント管理する。(その3:外部AWSアカウントへのSAML)

          IAM Identity CenterからのSAML接続について
          • IAM Identity CenterはSAML2.0を使用したIDフェデレーションをサポートし、SAML対応のサービスプロバイダと連携可能です。
          • これにより、IAM Identity Centerの認証情報を使って、ポータル画面から外部サービスプロバイダに接続できます。
          • 今回は、組織外のAWSアカウントに対してIAM Identity CenterからSAML接続を試みます。
           
          接続構成:
          • 外部AWSアカウントを持っていないため、メンバーアカウントを外部アカウントとして扱い、ルートアカウントからSAML接続を試みる。
          • 自組織の設定と外部AWSアカウントの設定を交互に行う。自組織の作業は「自組織」、外部AWSアカウント側の作業は「外部組織」と区別して進める。
          • メンバーアカウントはIAM Identity Centerから接続できないように設定を変更し、ルートアカウントで管理を戻した。
          この流れで、組織内での設定を外部AWSアカウントと連携させる方法について進めています。

          アプリケーションの追加(自組織)

          IAM Identity Centerに外部組織用のアプリケーションを追加するため、「IAM Identity Center」→「アプリケーション割り当て」→「アプリケーション」から「アプリケーションを追加」を選択して設定していきます。
          notion image
          カスタムアプリケーション」と「事前統合アプリケーション」があるので、「事前統合アプリケーション」から「External AWS Account」を選択して「」に進みます。
          notion image
          任意のアプリケーションの表示名を指定します。
          また、「ステップバイステップの手順を表示」を選択すると、設定手順が表示されるため、設定時に開いておくと良いかと思います
          notion image
          IAM Identity Centerメタデータ」の項目より、後ほど外部組織側設定で使用する「IAM Identity Center SAMLメタデータファイル」をダウンロードしておきます。
          notion image
          アプリケーションのプロパティ」と「アプリケーションメタデータ」は今回の場合、デフォルトで問題ないので、そのまま「送信」を選択します。
          notion image
          ユーザーを割り当て」を選択して、外部組織にアクセスさせたいユーザ・グループを選択します。
          notion image
          notion image

          IDプロバイダの追加(外部組織)

          外部組織側のアカウントに移り、IAM Identity Centerからの認証を受け付けるIDプロバイダの設定を行っていきます。
          IAM」→「アクセス管理」→「IDプロバイダ」の「プロバイダを追加」より設定を行っていきます。
          • IDプロバイダ(Identity Provider): 認証情報を提供するサービス。IAM Identity Centerや外部の認証システム(例えば、Active DirectoryやGoogle Workspace)などがこれに該当します。
          • サービスプロバイダ(Service Provider): ユーザーがアクセスしたいリソースやシステム。AWSアカウントや外部アプリケーションがサービスプロバイダです。
          IAM Identity Centerからの認証を行う場合、IDプロバイダとしてIAM Identity Centerを使用してユーザーの認証を行い、その後ユーザーはアクセスしたいAWSリソース(サービスプロバイダ)にアクセスできるようになります。
          notion image
          以下表、図のように設定を行い、「プロバイダを追加」を選択。
          notion image
          以下のように概要画面が表示されるため、後ほどIAM Identity Center側作業で必要となるARNを控えて「ロールの割り当て」でIDプロバイダと結びつけるIAMロールを作成します。
          notion image
           

          IAMロールの作成(外部組織)

          前手順に引き続き、設定を行っていきます。
          新しいロールを作成」を選択し、「次へ」進みます。
          notion image
          以下表、図のように設定を行い、「次のステップ:アクセス権限」を選択。
          項目
          設定
          信頼されたエンティティの種類を選択
          SAML 2.0 フェデレーション
          SAMLプロバイダー
          IdentityCenterSAML(先程作成したIDプロバイダ)
          プログラムによるアクセスとAWSマネジメントコンソールによるアクセスを許可する
          属性
          SAML:aud
          条件
          なし
          notion image
          IAM Identity Centerからのアクセス時に適用したいポリシーを選択して「次のステップ:タグ」を選択。
          notion image
           
           
          タグ設定は今回は特に設定せず次へ進み、ロール名の指定を行い、「ロールの作成」で作成します。
          notion image
          作成後、IAM Identity Center側の設定で必要となるIAMロールのARNを控えておきます。
          notion image
           

          属性マッピングの設定(自組織)

          再度、IAM Identity Centerの設定画面に戻り、「IAM Identity Center」→「アプリケーション割り当て」→「アプリケーション」の「設定済み」タブから先程作成したアプリケーション名を選択します。
          notion image
          アクション」から「属性マッピングを編集」を選択します。
          notion image
          下記の図の1行目と2行目はデフォルトで記載されているため、新たに3行目を追加し、以下のように設定します。
          また、以下表2列目のValue値の書式についてはarn:aws:iam::[ACCOUNTID]:saml-provider/[SAMLPROVIDERNAME],arn:aws:iam:: [ACCOUNTID]:role/[ROLENAME]となり、先程控えたIDプロバイダのARNとIAMロールのARNを結合したものを記載します。
           
          アプリケーションのユーザー属性
          この文字列値またはIAM Identity Centerのユーザー属性にマッピング
          形式
          備考
          Subject
          ${user:email}
          persistent
          デフォルトで入力済み
          ${user:email}
          unspecified
          デフォルトで入力済み
          arn:aws:iam::xxxxxxxxxxxx:saml-provider/IdentityCenterSAML,arn:aws:iam::xxxxxxxxxxxx:role/IdentityCenterSAML-Role
          unspecified
          ステップバイステップ手順に書式記載あり
           
          notion image

          IAM Identity Centerからのログイン(自組織)

          上記までの手順を実施することで、IAM Identity Centerのポータル画面に外部組織へログインするためのアプリケーションが表示されるようになっているため、表示されているアプリケーションを選択することで外部組織のAWSアカウントにログインできるようになります。
          notion image

          まとめ

          1. 自組織(A組織)の設定:
              • 自組織の IAM Identity CenterAアプリケーション を作成します。
              • AユーザーAアプリケーション に関連付けます。このアプリケーションは、他組織(B組織)のリソースにアクセスするために必要な認証情報を持つ役割を果たします。
          1. 他組織(B組織)の設定:
              • B組織で Bロール を作成し、アクセス権限(ポリシー)を設定します。
              • このロールには、B組織のリソースへのアクセス権限が含まれており、アクセスするために必要な認証を Aアプリケーション に委譲します。
          1. 信頼関係の設定:
              • B組織の IAM で、Aアプリケーション からの認証を受け入れるための信頼関係を設定します。具体的には、B組織の IAMロール に対して Aアプリケーション からの SAML 認証を受け付ける設定を行います。
              • これにより、A組織の IAM Identity Center が提供する認証を通じて、AユーザーがB組織のリソースにアクセスするためのロールを付与されます。
          1. Aユーザーのアクセス:
              • AユーザーがAアプリケーションを通じて認証されると、その認証情報をもとにB組織の Bロール を取得します。
              • B組織で設定した権限に基づき、AユーザーはB組織のリソースにアクセスできるようになります。
          このように、Aユーザーが自組織の IAM Identity Center を使って認証し、他組織のロールにアクセスする設定が完了します。この設定により、ユーザーはB組織のリソースにアクセスできますが、B組織のロールの認証と権限はA組織の IAM Identity Center によって管理されます。
           

          IAM Identity Centerを使って複数アカウント管理する。(その4:GHECへのSAML)

          前提条件
          GitHubでSAML認証を使用するには、以下の条件が必要です:
          • *GitHub Enterprise Cloud(GHEC)**を利用していること
          • GitHub Organizationを構成していること
          そのため、個人向けのフリープランやTeamプランではSAML認証は利用できません。もし検証したい場合は、Enterpriseトライアルを利用して機能を確認することをおすすめします。
          今回の記事は、Organizationの認証にSAMLを使用する前提で進めます。
          接続構成
          今回の設定手順では、GitHub Enterpriseプランを使用し、Organizationが構成されている前提で進めます。
          設定の流れは前回の外部AWSアカウント接続時と似ていますが、今回は外部組織がGitHubです。
          自組織側(IAM Identity Center)で設定を行い、外部組織(GitHub)との接続用アプリケーションを作成し、接続設定を行う流れです。
          構成イメージは前回と同様に、**自組織(IAM Identity Center)外部組織(GitHub)**の接続設定として説明します。
          SAMLメタデータの取得(外部組織)
          外部組織(GitHub)での設定において、SAMLメタデータを取得するために、前回の自組織側のアプリケーション設定時に指定した「アプリケーションACS URL」と「アプリケーションSAML対象者」に対応するSPメタデータをダウンロードします。
          メタデータのURLは次の形式で提供されます:
          https://github.com/orgs/ORGANIZATION/saml/metadata
          ORGANIZATIONは自分のOrganization名)
          このURLにアクセスし、表示されたXMLファイルをページ保存などでダウンロードしておきます。

          アプリケーションの追加(自組織)

          IAM Identity Centerに外部組織用のアプリケーションを追加するため、「IAM Identity Center」→「アプリケーション割り当て」→「アプリケーション」から「アプリケーションを追加」を選択して設定していきます。
          notion image
          「カスタムアプリケーション」と「事前統合アプリケーション」が選択肢としてありますが、今回は「事前統合アプリケーション」から「GitHub」を選択し、「次」に進みます。
          ※執筆時には英語表記となっているため、実際に設定する際には英語表記のまま進めることになりますが、適宜日本語に読み替えて進行してください。
          notion image
          今回はGitHub側に登録するURL等確認する必要があるので、「View step-by-step instructions」を選択。
          notion image
          別ウィンドウでセットアップ手順が書かれた以下のようなページが開くため、開いたままにしておき、元のウィンドウの「IAM Identity Center metadata」より「IAM Identity Center Certificate」をダウンロードしておきます。(※別ウィンドウでも同じIAM Identity Center証明書がダウンロードできます)
          notion image
          notion image
          Configure application」(ディスプレイ名等)は任意で入力、「Application properties」はそのまま空欄とし、「Application metadata」で「Upload application SAML metadata file」を選択し、先程事前にダウンロードしたGitHubのSPメタデータを選択して「Submit」します。
          notion image
          Assign Users」を選択して、外部組織にアクセスさせたいユーザ・グループを選択します。
          notion image
          notion image

          SAMLの有効化(外部組織)

          GitHubOrganizationSAML設定が可能なユーザでログインし、右上のユーザアイコンから「Your organizations」より自組織の「Settings」を選択。
          notion image
          左メニューの「Authentication security」に「SAML single sign-on」の項目があり、「Enable SAML authentication」のチェックを付けると以下のような設定項目が表示されるため、先程のIAM Identity Centerの設定時に別ウィンドウで開いたセットアップ手順に記載されている「Single sign-on URL」と「Issuer」を入力、「Public certificate」には、先程ダウンロードした「IAM Identity Center Certificate」の内容をコピペします。
          また、鉛筆アイコンより「RSA-SHA256」、「SHA256」を指定しておきます。
          項目
          設定
          Sign on URL
          ステップバイステップ手順のSingle sign-on URL
          Issuer
          ステップバイステップ手順のIssuer
          Public certificate
          IAM Identity Centerの証明書
          Signature Method
          RSA-SHA256
          Digest Method
          SHA256
          notion image
          全て設定できたら「Test SAML configuration」を選択することで、接続テストが行われます。
          初回はIAM Identity CenterGitHubのユーザ情報入力が求められるかと思うので、無事IAM Identity CenterSAMLでログインできれば、以下のように無事テストが成功した画面となるため、最後に「Save」して終了です。
          notion image

          属性マッピングの設定(自組織)

          前回は属性マッピングの設定も手動で行いましたが、GitHubの場合は特に変更する必要が無いため、設定は行いません。
          ちなみに、デフォルトでは以下のようなアトリビュートが設定されます。
          User attribute in the application
          Maps to this string value or user attribute in IAM Identity Center
          Format
          Subject
          ${user:email}
          unspecified
          Email
          ${user:email}
          unspecified

          IAM Identity Centerからのログイン(自組織)

          上記までの手順を実施することで、IAM Identity Centerのポータル画面にGitHubへログインするためのアプリケーションが表示されるようになっているため、表示されているアプリケーションを選択することでGitHubにログインできるようになります。
          notion image
          おわりに
          GitHubでのSAML認証設定には、Enterpriseプランが必要ですが、IAM Identity Centerの設定画面に表示されるステップバイステップの手順に従えば、設定は比較的簡単に進められます。
          ただし、以下の点に留意する必要があります:
          • 「IdP Initiated SSO」の設定がGitHub画面では見つからない場合があります。
          • 手順通りに進めると、IAM Identity CenterとGitHubを行ったり来たりする必要があるため、今回紹介した方法で設定することをおすすめします。
          また、GitHub側でログアウト後に再度SAML接続を行う際には、ユーザー名やパスワードの再入力が求められることがあります。これに関する詳細な設定方法は見つかりませんでしたが、設定次第で回避できるかもしれません。
          さらに、GitHub側でOrganizationの全メンバーにSAML認証を要求することもできるため、IAM Identity CenterとGitHubの認証をSAML認証で統合したい場合は、今回の手順を参考にして設定を進めてください。
           

          一問道場

          シナリオ:

          企業はオンプレミスのActive Directoryサービスを使用してユーザー認証を行っています。企業は同じ認証サービスを利用してAWSアカウントにもサインインしたいと考えています。AWSアカウントはAWS Organizationsを使用しています。また、オンプレミス環境とすべてのAWSアカウント間にはAWS Site-to-Site VPN接続がすでに確立されています。
          企業のセキュリティポリシーは、ユーザーグループや役割に基づく条件付きアクセスを要求しています。ユーザーIDは一元管理する必要があります。

          要件:

          • ユーザーグループや役割に基づく条件付きアクセス
          • ユーザーIDの一元管理

          どのソリューションが要件を満たすか?

          選択肢:

          A.
          • AWS IAM Identity Center(AWS Single Sign-On)を設定
          • SAML 2.0を使用してActive Directoryに接続
          • System for Cross-domain Identity Management(SCIM)v2.0プロトコルを使用して自動プロビジョニングを有効
          • 属性ベースのアクセス制御(ABAC)を使用してAWSアカウントへのアクセスを付与
          B.
          • AWS IAM Identity Center(AWS Single Sign-On)を設定
          • IAM Identity CenterをIDソースとして使用
          • System for Cross-domain Identity Management(SCIM)v2.0プロトコルを使用して自動プロビジョニングを有効
          • IAM Identity Centerの権限セットを使用してAWSアカウントへのアクセスを付与
          C.
          • 企業のAWSアカウントの1つでAWS Identity and Access Management(IAM)を設定
          • SAML 2.0 IDプロバイダーを使用
          • フェデレーテッドユーザーに対応するIAMユーザーをプロビジョニング
          • Active Directoryの適切なグループに基づくアクセスを付与
          • クロスアカウントIAMユーザーを使用してAWSアカウントへのアクセスを付与
          D.
          • 企業のAWSアカウントの1つでAWS Identity and Access Management(IAM)を設定
          • OpenID Connect(OIDC)IDプロバイダーを使用
          • Active Directoryの適切なグループに対応するフェデレーテッドユーザーに対してAWSアカウントへのアクセスを付与するIAMロールをプロビジョニング
          • クロスアカウントIAMロールを使用してAWSアカウントへのアクセスを付与

          もう少し詳しく、わかりやすく説明しますね。

          最適なソリューション:A

          理由:

          Aが最適な理由は以下の通りです:
          1. AWS IAM Identity Center(AWS SSO)を使用
            1. AWS SSOを使うことで、オンプレミスのActive Directoryと連携できます。これにより、AWS環境の管理を一元化でき、ユーザー認証を効率的に行えます。オンプレミスのActive Directoryで管理しているユーザーがそのままAWSにもアクセスできるようになります。
          1. SAML 2.0を使用して認証
            1. SAML 2.0は、Active Directoryのユーザー情報をAWSに伝える認証プロトコルです。これを使うことで、ユーザーがAWSにアクセスする際に、企業のActive Directoryで認証を行い、シングルサインオン(SSO)を実現できます。
          1. SCIM v2.0を使った自動プロビジョニング
            1. SCIM(System for Cross-domain Identity Management)v2.0は、ユーザー情報を自動でAWSに反映させる仕組みです。これにより、Active Directoryで新しいユーザーを作成した際、AWS側でも自動的にアカウントが作成され、管理が簡単になります。
          1. ABAC(属性ベースのアクセス制御)で細かいアクセス管理
            1. ABACは、ユーザーの属性(例えば、役職や部署など)に基づいてアクセス権を管理する方法です。これを使うことで、ユーザーグループや役職に応じて、AWSアカウントへのアクセスを柔軟に制御できます。
          このように、Aの方法では、ユーザーIDの管理が一元化され、アクセス制御もグループや役職に基づいて柔軟に行えます。セキュリティポリシーを満たすための条件付きアクセスも簡単に設定できます。

          他の選択肢の評価:

          • B
            • IAM Identity Centerを使う点ではAと似ていますが、条件付きアクセスの柔軟性に欠けます。特にグループや役職ごとのアクセス制御が細かくできないため、要件を満たしきれません。
          • C
            • IAMを使って手動でユーザーを設定する方法です。ユーザーIDの一元管理や自動プロビジョニングには対応していません。また、クロスアカウントアクセスを設定するために多くの手間がかかります。

              1. フェデレーテッドユーザーとIAMユーザー

            • フェデレーテッドユーザー(外部のIDシステムからログインするユーザー)は、IAMユーザーを作成せずに、IAMロールを使ってアクセス管理します。
            • ですが、選択肢Cでは、フェデレーテッドユーザーに対してIAMユーザーを作成する方法を採っています。これだと不必要にIAMユーザーを作らないといけないため、効率的ではありません。
            • 2. クロスアカウントアクセスにIAMユーザーを使う

            • クロスアカウントアクセス(異なるAWSアカウント間でのアクセス)では、IAMロールを使う方が簡単で効率的です。
            • しかし、選択肢Cでは、クロスアカウントアクセスにIAMユーザーを使っています。これも不適切で、代わりにIAMロールを使うべきです。
          • D
            • IAMロールとOIDCを使う方法です。この方法もユーザー管理が手動で行われるため、一元管理自動プロビジョニングには対応していません。セキュリティの管理が煩雑になり、効率的ではありません。

          結論:

          Aは、ユーザー管理とアクセス制御の面で最も効率的で、安全かつ簡単に実装できる方法です。BCDの方法は、特にユーザー管理や自動化の部分で手間がかかり、要件を満たすのが難しいため、Aが最適な選択肢です。
          相关文章
          クラウド技術の共有 | AWS Site-to-Site
          Lazy loaded image
          EKSでのWordPressデプロイ:KCNA-JP試験対策 (Kubernetes実践編)
          Lazy loaded image
          初心者向け!コンテナ化WordPressサイト構築ガイド(超詳細版)
          Lazy loaded image
          EFSを活用!AWS EC2でDockerを使ったWordPressサイト構築
          Lazy loaded image
          529-AWS SAP AWS 「理論・実践・一問道場」VPCエンドポイント
          Lazy loaded image
          528-AWS SAP AWS 「理論・実践・一問道場」Migration Evaluator
          Lazy loaded image
          009-AWS SAP AWS 「理論・実践・一問道場」 ElasticCache007-AWS SAP AWS 「理論・実践・一問道場」 マイクロサービスのコンテナ化とサーバーレスアーキテクチャ
          Loading...
          目录
          0%
          みなみ
          みなみ
          一个普通的干饭人🍚
          最新发布
          02-生成AIパスポート試験対策:第2章「生成AI」
          2025-2-1
          01-生成AIパスポート試験対策:第1章「人口知能」
          2025-2-1
          究極のAWS認定 AI 実践者 AIF-C01 - 学習メモ
          2025-1-27
          不要再傻傻的直接买NISA啦
          2025-1-27
          Kubernetes、仮想マシンとコンテナの概念を超簡単に解説!
          2025-1-24
          529-AWS SAP AWS 「理論・実践・一問道場」VPCエンドポイント
          2025-1-22
          公告
          🎉欢迎访问我的博客🎉
          - 感谢您的支持 --
          本站点于2024/09/01建立
          👏主要分享IT相关主题👏
          系统管理:
          Redhat…
          容器和编排:
          Kubernetes、Openshift…
          云计算:
          AWS、IBM…
          AI入门
          以及技术笔记和考证经验
          定期更新,欢迎互动。
          感谢访问!
          快速浏览相关标签
           
          目录
          0%