最初に
こんな勘違いをする人はあまりいないかもしれませんが、ロール切り替え(スイッチロール)した時のアクセス許可について、自分に対してのメモも兼ねて記しておきます。
ロール切り替え(スイッチロール)した時のアクセス許可は累積せず、ロールに設定されているアクセス許可だけが有効になる
ロールの切り替えをユーザーに許可して、実際にロールの切り替えを行った際、有効になるアクセス許可の内容は「ロールに記載されたアクセス許可のみ」となります。
私は当初、ユーザー及びユーザーが属しているグループのアクセス許可との累積になると思い込んでしまっていました。実運用に入る前にその認識が間違っていることに気がつけたので良かったのですが、ドキュメントにはしっかりと書かれていました。
重要
IAM ユーザーと切り替え後のロールのアクセス許可は、累積されません。同時に有効になるアクセス権限のセットは 1 つのみです。ロールを切り替えると、ユーザーアクセス権限が一時的に無効になり、切り替え後のロールに割り当てられたアクセス権限が有効になります。そのロールを終了すると、ユーザーアクセス権限が自動的に復元されます。
何故勘違いをしたのか?
この件に関して言えば、もう単純に「アクセス許可は累積するものだと思い込んでいて、ドキュメントを読まなかった」ことがその理由だと思っています。
どうすれば良かったのか
AWSのドキュメントは分量が多く、読み込むことは決して楽ではないと思います。ですが、公式のドキュメントがある以上、読むべきものだと思います。それに、一回読んだだけでは理解しきれなくとも、何度か読んでいるうちに見えてくることもあります。
また、AWSに限ったことではありませんが、何かを使うのであれば、ドキュメントを読んで裏付けを取っておくことは重要だとも思います。誰かに「この実装をした理由は何でしょうか?」と聞かれた時に「このような形でドキュメントに書かれていて、実際に挙動も確認しています」と言えた方が、話す内容に説得力があります。
実際の挙動で確認できたとしても、ドキュメントは確認しておく
機能を理解するには、動かしてみるのが早いと私は思っています。ドキュメントの読み込みもそこそこに、まずは動かしてみることが多いと自分では認識しています。
ただ、以前は自分で動かしたことだけを根拠にして物事を話すことが多く、ドキュメントの読み込みが不十分なために、実装した部分の説明を求められた時に確実な説明ができなかったこともしばしばでした。
最初のうちは細かくつっこんでこない人もいますけれど、実装してからしばらく時間が経ち、実装した部分で何かあった場合には「何故そういう実装をしたのか、その時に確認した情報は何だったのか、どういう理解をして実装をしたのか」などと細かく聞かれることになります。
今回の件は、実装時には見逃してしまったとしても、評価を行っていればその時点で気がついたことだとは思うのですが、評価項目の設定自体を誤っていたら結局は見過ごされることに繋がっていたとも思います。幸いにもこの時は実装中に気がついたので良かったのですが、運が悪ければどうなっていたことかと考えさせられました。
そんなこともあり、今ではドキュメントを読むこと意識しています。「言うは易し行うは難し」ではあるのですが、それでもAWSに関わるなら意識していきたいと思います。