
認可は、遊園地のアトラクションで身長制限をクリアした人が、実際に乗れるかどうかを判断するようなものです。認証(入場チケットを持っているか確認)の後、その人が特定の行動(アトラクションに乗る)をする権限があるかを決めるのが認可です。システムの世界では、ログイン(認証)したユーザーが、特定の情報にアクセスしたり、機能を実行したりする権限を与える仕組みを指します。
面接官:認可(Authorization)について説明してください。
私:認可とは、システムやリソースへのアクセス権をユーザーやアプリケーションに付与するプロセスです。認証がユーザーの身元を確認するのに対し、認可は確認されたユーザーが何ができるかを決定します。
以前のプロジェクトで、顧客情報管理システムを開発した際、認可メカニズムの実装が課題となりました。特定の役職(例えば、営業部長)だけが、特定の顧客データ(例えば、売上情報)を閲覧・編集できるようにする必要があったからです。
そこで、OAuth 2.0とロールベースアクセス制御(RBAC)を組み合わせた認可システムを構築しました。OAuth 2.0でユーザーの認証を行い、RBACでユーザーのロール(役職)に基づいてアクセス権を付与しました。
これにより、顧客データの機密性を保ちながら、必要な従業員が必要な情報にアクセスできる環境を実現できました。さらに、役割の追加や変更が容易になったため、組織構造の変化にも柔軟に対応できるようになりました。
現役エンジニアによる深掘り解説
メリット
セキュリティの向上: 認可によって、許可されたユーザーのみが機密データや機能にアクセスできるようになり、不正アクセスやデータ漏洩のリスクを軽減できます。最小権限の原則 (Principle of Least Privilege) を実現する上で不可欠です。
コンプライアンスの遵守: 多くの業界や規制では、データへのアクセス制御が義務付けられています。認可メカニズムを適切に実装することで、これらの規制への準拠を容易にできます。
柔軟なアクセス制御: ロールベースアクセス制御(RBAC)や属性ベースアクセス制御(ABAC)などの認可モデルを利用することで、組織のニーズに合わせて柔軟なアクセス制御ポリシーを定義できます。
デメリット
実装の複雑性: 認可メカニズムの実装は、特に大規模なシステムや複雑なアクセス制御要件がある場合に、複雑になる可能性があります。適切な設計と実装が不可欠です。
パフォーマンスへの影響: 認可処理は、リソースへのアクセスごとに実行されるため、システムのパフォーマンスに影響を与える可能性があります。キャッシュなどの最適化戦略が必要となる場合があります。
管理の負担: ユーザーの役割やアクセス権の変更、ポリシーの更新など、認可システムの管理には継続的な負担がかかります。自動化ツールや管理コンソールを導入することで、管理コストを削減できます。
⚠️ 面接突破のワンポイント
- 認可方式の種類(RBAC, ABAC, ACLなど)と、それぞれの特徴、具体的な利用場面を説明できるように準備しておきましょう。
- OAuth 2.0やOpenID Connectといった認可フレームワークの基本的な仕組みと、それぞれの役割について理解しておきましょう。


