アイデンティティとアクセス管理(IAM)とは何ですか?

アイデンティティとアクセス管理は、ユーザー認証とリソースアクセスの制御を提供します。一般的にIAMとして知られるこの技術は、適切な人が適切なタイミングで適切な理由により適切なデジタルリソースにアクセスできることを保証します。

IAMの基本概念

IAMを理解するには、いくつかの基本的な概念を知っておく必要があります:
  • デジタルリソースデジタルリソースは、コンピューターシステム内のアプリケーションとデータの任意の組み合わせです。デジタルリソースの例には、Webアプリケーション、API、プラットフォーム、デバイス、またはデータベースが含まれます。
  • IAMの核心はアイデンティティです。誰かがあなたのリソースへのアクセスを求めています。それは顧客、従業員、メンバー、参加者などかもしれません。IAMでは、ユーザーアカウントがデジタルアイデンティティです。ユーザーアカウントは、ソフトウェア、IoTデバイス、ロボットなどの非人間を表すこともできます。

  • 認証は、デジタルアイデンティティの検証です。誰か(または何か)が、自分が主張するユーザーであることを証明するために認証を行います。
  • 認可は、ユーザーがアクセスできるリソースを決定するプロセスです。

認証と認可の違い

認証と認可は、ユーザーにとって単一の体験のように見えるため、混同されがちです。しかし、これらは2つの別個のプロセスです:認証はユーザーのアイデンティティを証明し、認可はユーザーの特定のリソースへのアクセスを許可または拒否します。 認証と認可をオフィスビルのセキュリティシステムとして考えることができます。ユーザーはビルに入りたい人々です。人々がアクセスしたいリソースは、ビル内の領域です:フロア、部屋など。 Authentication:ビルに入る際、警備員に写真付きIDバッジを見せる必要があります。警備員はバッジの写真とあなたの顔を比較します。一致すれば、警備員はあなたをドアの中に通し、ビルのさまざまな領域へのアクセスを試みることができます。警備員はあなたがどの部屋にアクセスできるかを教えません。彼らはただ、あなたが主張する人物であることの証明を得るだけです。これが認証です:ユーザーのアイデンティティを確認すること。
Authorization:このシナリオでは、ビル内のエレベーターやドアウェイにアクセス用のキーセンサーがあると想像してください。あなたのバッジのチップは、あなたの会社が占有する1階へのアクセスのみを許可します。他の階にアクセスしようとしてバッジをスワイプすると、アクセスは拒否されます。あなたは自分のプライベートオフィスにはアクセスできますが、同僚のオフィスにはアクセスできません。備品室には入れますが、サーバールームには入れません。これが認可です:アイデンティティに基づいて異なるリソースへのアクセスを許可および拒否すること。
認証と認可についてさらに詳しく知るには、認証と認可の違いをお読みください。

IAMは何をするのか?

アイデンティティとアクセス管理は、ユーザー認証とリソースアクセスの制御を提供します:
  • ユーザーがどのようにしてあなたのシステムの一部になるか
  • どのユーザー情報を保存するか
  • ユーザーがどのように自身のアイデンティティを証明できるか
  • ユーザーがいつ、どのくらいの頻度でアイデンティティを証明する必要があるか
  • アイデンティティを証明する体験
  • 誰が異なるリソースにアクセスできるか、できないか
IAMをアプリケーション、API、デバイス、データストア、またはその他のテクノロジーと統合します。この統合は非常にシンプルな場合があります。例えば、Webアプリケーションが認証を完全にFacebookに依存し、オールオアナッシングの認可ポリシーを持っているような場合です。アプリは簡単なチェックを行います:現在のブラウザでユーザーがFacebookにログインしていない場合、ログインするよう指示します。認証されると、すべてのユーザーがアプリのすべての機能にアクセスできます。 このような単純なIAMソリューションがユーザー、組織、業界、またはコンプライアンス基準のニーズを満たすことはほとんどありません。現実の世界では、IAMは複雑です。ほとんどのシステムは、以下の機能の組み合わせを必要とします:
  • シームレスなサインアップとログイン体験:スムーズでプロフェッショナルなログインとサインアップ体験が、あなたのブランドのルックアンドフィールと言語で、アプリ内で行われます。
  • 複数のユーザーアイデンティティソース:ユーザーは、様々なソーシャル(GoogleやLinkedinなど)、エンタープライズ(Microsoft Active Directoryなど)、その他のアイデンティティプロバイダーを使用してログインできることを期待しています。
  • 多要素認証(MFA):パスワードが頻繁に盗まれる時代において、追加の身元証明を要求することが新しい標準となっています。指紋認証やワンタイムパスワードは、一般的な認証方法の例です。詳細については、多要素認証(MFA)をお読みください。
  • ステップアップ認証:高度な機能や機密情報へのアクセスには、日常的なタスクやデータよりも強力な身元証明が必要です。ステップアップ認証は、選択された領域や機能に対して追加の身元確認を要求します。詳細については、ステップアップ認証の追加をお読みください。
  • 攻撃保護:ボットや悪意のある行為者がシステムに侵入するのを防ぐことは、サイバーセキュリティの基本です。詳細については、攻撃保護をお読みください。
  • ロールベースアクセス制御(RBAC):ユーザー数が増えるにつれ、各個人のアクセスを管理することはすぐに非現実的になります。RBACでは、同じロールを持つ人々は同じリソースへのアクセス権を持ちます。詳細については、ロールベースアクセス制御をお読みください。
  • きめ細かな認可(FGA):リソースやテクノロジーへのユーザーアクセスを管理するためのより多くのオプションが必要な場合、関係ベースのアクセス制御を使用してロールベースを超えることができます。個々のユーザーに特定のリソースへのアクセスを与え、特定のユースケースに最適なソリューションを決定できます。詳細については、きめ細かな認可とは何か?
このレベルの複雑さに直面して、多くの開発者は自前のソリューションを構築する代わりに、Auth0のようなIAMプラットフォームに頼っています。

IAMはどのように機能するか?

「アイデンティティとアクセス管理」は明確に定義された単一のシステムではありません。IAMはデジタルリソースへの安全なアクセスという課題を解決するための規律とフレームワークの一種です。IAMシステムを実装するためのアプローチには無限の可能性があります。このセクションでは、一般的な実装における要素と実践について探ります。

アイデンティティプロバイダー

過去には、アイデンティティとアクセス管理の標準は、システムがユーザーのためにアイデンティティ情報を作成し管理することでした。ユーザーが新しいWebアプリケーションを使用したい場合、毎回アカウントを作成するためのフォームに記入しました。アプリケーションはログイン認証情報を含むすべての情報を保存し、ユーザーがサインインするたびに独自の認証を実行しました。 インターネットが成長し、より多くのアプリケーションが利用可能になるにつれ、ほとんどの人々は無数のユーザーアカウントを蓄積し、それぞれに覚えるべきアカウント名とパスワードがありました。このように機能し続けているアプリケーションは多くありますが、多くの他のアプリケーションは現在、開発とメンテナンスの負担とユーザーの労力を減らすために、アイデンティティプロバイダーに依存しています。 アイデンティティプロバイダーは、アイデンティティ情報を作成、維持、管理し、他のアプリケーションに認証サービスを提供することができます。例えば、Googleアカウントはアイデンティティプロバイダーです。ユーザー名、フルネーム、職位、メールアドレスなどのアカウント情報を保存します。Slateオンラインマガジンでは、情報を新たに入力して保存する手順を踏むのではなく、Google(または他のアイデンティティプロバイダー)でログインすることができます。
アイデンティティプロバイダーは、それに依存するアプリケーションと認証情報を共有しません。例えば、SlateはあなたのGoogleパスワードを見ることはありません。Googleは、あなたが身元を証明したことをSlateに知らせるだけです。 その他のアイデンティティプロバイダーには、ソーシャルメディア(FacebookやLinkedInなど)、エンタープライズ(Microsoft Active Directoryなど)、法的アイデンティティプロバイダー(スウェーデンのBankIDなど)があります。

認証要素

認証要素はユーザーの身元を証明する方法です。一般的に、以下の基本的なタイプに分類されます:
要素タイプ
知識(あなたが知っているもの)PIN、パスワード
所有(あなたが持っているもの)携帯電話、暗号化キーデバイス
固有性(あなたの特徴)指紋、顔認証、虹彩スキャン
IAMシステムは、身元を確認するために1つまたは複数の認証要素を必要とします。

認証と認可の標準

認証と認可の標準は、以下の方法に関するガイダンスを提供するオープンな仕様とプロトコルです:
  • アイデンティティを管理するIAMシステムの設計
  • 個人データの安全な移動
  • リソースにアクセスできる人の決定
これらのIAM業界標準は、最も安全で信頼性が高く、実装が実用的であると考えられています:

OAuth 2.0

OAuth 2.0は、APIにアクセスするための委任プロトコルであり、IAMの業界標準プロトコルです。オープンな認可プロトコルであるOAuth 2.0は、アプリがユーザーの認証情報を共有することなく、ユーザーに代わって他のWebアプリがホストするリソースにアクセスすることを可能にします。これは、サードパーティの開発者がFacebook、Google、Twitterなどの大規模なソーシャルプラットフォームをログインに利用できるようにする標準です。詳細については、OAuth 2.0認可フレームワークをお読みください。

OpenID Connect

OAuth 2.0の上に構築されたシンプルなアイデンティティレイヤーであるOpenID Connect(OIDC)は、ユーザーの身元を簡単に確認し、アイデンティティプロバイダーから基本的なプロファイル情報を取得することを可能にします。OIDCは別のオープン標準プロトコルです。詳細については、OpenID Connectプロトコルをお読みください。

JSONウェブトークン

JSONウェブトークン(JWT)は、当事者間で情報をJSONオブジェクトとして安全に送信するためのコンパクトで自己完結型の方法を定義するオープン標準です。JWTはデジタル署名されているため、検証および信頼することができます。これらは、認証されたユーザーの身元をアイデンティティプロバイダーと認証を要求するサービス間で渡すために使用できます。また、認証および暗号化することもできます。詳細については、JSONウェブトークンをお読みください。

Security Assertion Markup Language(SAML)

Security Assertion Markup Language(SAML)は、企業がユーザー認証および認可情報をパートナー企業や従業員が使用するエンタープライズアプリケーションに伝達できるようにするオープン標準のXMLベースのデータ形式です。詳細については、SAMLをお読みください。

Web Services Federation(WS-Fed)

Microsoftによって開発され、その多くのアプリケーションで広く使用されているこの標準は、アイデンティティと認可情報を交換するために異なるエンティティ間でセキュリティトークンを転送する方法を定義しています。詳細については、Web Services Federationプロトコルをお読みください。

なぜIAMプラットフォームを使用するのか?

なぜ多くの開発者が、ゼロから独自のソリューションを構築するのではなく、アイデンティティとアクセス管理プラットフォーム上に構築することを選択するのでしょうか? ユーザーの期待、顧客の要件、およびコンプライアンス基準は、重大な技術的課題をもたらします。複数のユーソース、認証要素、およびオープンな業界標準があるため、典型的なIAMシステムを構築するために必要な知識と作業量は膨大になる可能性があります。強力なIAMプラットフォームは、すべてのアイデンティティプロバイダーと認証要素に対する組み込みのサポートを持ち、ソフトウェアとの簡単な統合のためのAPIを提供し、認証と認可のための最も安全な業界標準に依存しています。 IAMソリューションを構築するか購入するかをまだ決定していない人々にとって、構築 vs. 購入:アイデンティティ管理の評価ガイドは有用なリソースです。