技術ブログ
渡部です。これは、(全部俺) Oracle Cloud Infrastructure Advent Calendar 2018 の12日目のエントリです。
Oracle Cloud Infrastructure(以下OCI)で認証および認可(権限)の役割を担うIAMの構成要素は以下の通りです。
ここで注意いただきたいのは、AWSで存在していたIAMロールがないという点です。 AWSのIAMロールにはいくつかの役割がありますが、最もよく使われる種類および使用形態は、EC2インスタンスに権限を委任するIAMロールだと思います。
このIAMロールを使うと、EC2インスタンスに認証のための秘密情報を保管する必要がなく非常に便利です。私も多くの用途で使用しています。これがOCIで使えないとなると非常に困るのですが・・・ 大丈夫です。代替となる機能、いや、より便利な機能として「動的グループ」と「インスタンスプリンシパル」があります。
動的グループとインスタンスプリンシパルを用いて権限を付与する方法の利点は、 権限を付与する対象となるインスタンスをルールベースで柔軟に指定できることです。
権限を付与するインスタンスをいちいち指定する必要がないため、インスタンスが多数ある環境では非常に便利です。
インスタンスプリンシパルを構成するには、権限を付与するインスタンスの条件を指定したマッチングルールを もつ動的グループを作成し、その動的グループに必要な権限を付与します。
マッチングルールの条件には、コンパートメントID、インスタンスID、タグを指定できますが、 柔軟性の観点からタグを基本的に使用することになるでしょう。
たとえば、あるコンパートメント内のタグtag1=val1のインスタンスを動的グループに含めるマッチングルールは以下のように書けます。
All {instance.compartment.id='ocidv1:compartment:oc1:phx:oc1:phx:...,', tag.mytags.tag1.value='val1'}}
インスタンスプリンシパルの枠組みは、条件ベースで対象インスタンスを指定できる点で柔軟性に富み、とても良いと思います。 ただ、現状だと、どのインスタンスがマッチングルールの条件に合致しているかを確認する方法がないため、 この方法が提供されるとさらに使いやすくなると思います。
また、Amazon EC2 の IAM ロールの場合と異なり、明示的にインスタンスプリンシパル認可を有効にする必要がある点に注意してください。