IAMグループに2段階認証とポリシーでリソースへのアクセスを制限してみた
こんにちは。Oracle Cloud Infrastructure(OCI)特集 編集部です。
以前のブログで
IAMによる2段階認証をしてみた
というIAMの2段階認証について記事を掲載いたしました。
今回は作成したIAMユーザーが所属するグループに,
2段階認証を使用しないとリソースを使用できないようにポリシーで制限してみようと思います。
1.前提条件と構築物
前提条件として、
前回のブログ記事でIAMユーザーと2段階認証の設定方法について記載したためこちらは省きます。
今回構築するものは
- IAMグループ
- コンパートメント
- コンパートメント内リソース(バケット)
- ポリシー
と、なります。
OCIではユーザにポリシーを直接付与することはできないため
2段階認証を強制するために所属させるグループを作成する必要があります。
※下記図は今回使用するIAMユーザーです。

2.構成図
今回作成するものについて図に表してみました。
下記図のポリシーによって特定のグループは2段階認証を使用しないと
コンパートメント内のリソースに対してアクセスできません。

3.所属するグループ・コンパートメントの作成
グループ・コンパートメントを作成できるユーザーでOCIにログインします。
※IDCSユーザーでログインしています。

ログイン後左上の「三」→「アイデンティティ」→「グループ」
の順に選択し、IAMユーザーの所属するグループを作成します。

グループの作成を選択し、名前、説明を記入して作成します。

ユーザーをグループに追加を選択し、
作成したIAMユーザーを選び、追加します。

次に「三」→「アイデンティティ」→「コンパートメント」の順に選択し、
コンパートメントを作成します。

コンパートメントの作成を選択後、
名前、説明を記入し、親コンパートメントを選び作成します。

4.確認用リソースの作成
作成したコンパートメントに確認用のリソースを作成します。
※今回は作成したコンパートメントにバケットを作成しています。
※リソースを作成せずに、次項目のポリシーの作成を実施しようとするとエラーが表示されます。

5.ポリシーの作成
「三」→「アイデンティティ」→「ポリシー」の順に選択し、ポリシーを作成します。

作成したコンパートメントを選択し、ポリシーの作成から
名前、説明、ステートメントを記入し、ポリシーを作成します。
ステートメント欄には作成したグループは2段階認証しないと
作成したコンパートメント内のリソースが利用できないポリシーを記載してあります。
※下記はステートメント全文になります。
allow group techvan_tarou_MFA_test_group to manage all-resources in compartment techvan_tarou_MFA_test_compartment where request.user.mfaTotpVerified='true'

6.ポリシーの確認
ポリシーが正しく適用されているか確認するために
作成したIAMユーザーで2段階認証を設定せずログインします。

作成したリソースを確認しようとするとエラーになります。

次に2段階認証を設定後ログインしなおします。


2段階認証を使用したことによりコンパートメント内のリソースを確認できました。

このポリシーを使えばグループに所属するIAMユーザーは
2段階認証を設定しないと、ログインはできるが
リソースを使用することができなくなるため
利用方法を守れない人はリソースを使えないようにすることができます。
IAMの2段階認証の管理はそのユーザーに依存してしまうため
面倒に感じて2段階認証を設定しない人が出るかもしれませんがこの方法ならIAMユーザーを使用する人に強制的に2段階認証を使用してもらえます。