ヤマムギ

growing hard days.

*

Amazon API GatewayのIAM認証の動作を確認しました

      2021/10/17

API GatewayのIAM認証は、IAMユーザーが実行できるように認証する、ということはわかっていても細かい動作は手元で動かしてみないと、でしたのでやってみました。

主な手順は公式ナレッジのAPI Gateway API の IAM 認証を有効にする方法を教えてくださいを参考にしています。

Amazon API Gatewayでモックを作るで作ったAPIで試します。

API Gatewayの設定

メソッドリクエストで、[認可]に[AWS_IAM]を選択しました。
[アクション]-[APIのデプロイ]でデプロイしておきました。

そして、ブラウザからAPIの呼び出しをすると、以下のメッセージが返ってきました。

IAM

IAMユーザーは同じアカウントと別アカウントで3ユーザー作っておきます。
* api-exe-valid
* api-exe-nonvalid
* api-not-exe

各IAMユーザーの最終的なシナリオです。

IAMユーザー IDベースのポリシー リソース(API)ベースのポリシー アカウント
api-exe-valid 許可 許可
api-exe-nonvalid 許可 なし
api-not-exe なし なし

IDベースのポリシーは以下をインラインポリシーに設定しました。

ARNは、API Gatewayコンソールのリソースのメソッドリクエストにありますので、コピーして貼り付けています。

段階的に確認していきますので、まずはユーザーを作成して、APIのリソースベースのポリシーはなしで試します。

IDベースのみで確認

APIの実行確認は、POSTMANで行いました。
IAM認証によるAPIの実行には、バージョン4での署名が必要なのですが、POSTMANにアクセスキーIDとシークレットアクセスキーを設定すると、生成してくれますので便利です。

同じアカウントでIDベースのポリシーなし

api-not-exe

IDベースのポリシーで許可していませんので、api-not-exeユーザーには権限が無いメッセージが返ってきました。
想定どおりです。

同じアカウントでIDベースのポリシーあり

api-exe-nonvalid

IAM認証が成功して、結果が表示されました。

違うアカウントでIDベースのポリシーあり

api-exe-valid

リソースに対しての権限がないというメッセージが表示されました。

リソースベースのポリシーを別アカウント向けに設定して確認

APIのリソースポリシーはこのようなポリシーです。

今回は特定のIAMユーザーのみですが、対象のアカウント側に誰に許可するかを委任する場合は、 “arn:aws:iam::098765432109:root”をPrincipalにします。

違うアカウントでIDベースのポリシーあり

api-exe-valid

認証が成功しました。
別のアカウントからはAPIにリソースポリシーが必要ということがわかりました。

ちなみに

同じアカウントでIDベースのポリシーあり

api-exe-nonvalid

認証成功しました。
リソースポリシーで別アカウントのみとしたいときは拒否ポリシーも必要ですね。

ということで、リソースポリシーに拒否ポリシーを追加してNotPrincipalにしてみました。

これで、別アカウントの特定のIAMユーザー以外からは拒否できるAPIができました。


最後までお読みいただきましてありがとうございました!

「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。

 - AWS , ,

ad

ad

  関連記事

YouTubeチャンネル「ヤマムギ」をはじめました

YouTubeチャンネル「ヤマムギ」をはじめました。 2021年GWチャレンジと …

AWS Transit GatewayのVPCアタッチメント

構成 これぐらいの構成なら、VPCピアリングでいいのですが、Transit Ga …

Amazon EC2のAMIイメージを自動取得して保持日数が過ぎたら削除

画像の保存をEC2に戻した事もあってEC2のバックアップの自動取得を勉強がてらや …

iPad ProのWorking CopyでAWS CodeCommitのリポジトリを使う

iPad Proを導入しましたので、原稿執筆や校正でフル活用しようと思いまして。 …

AWS Toolkit for Eclipseで「Error Message: Unable to find a region via the region provider chain. Must provide an explicit region in the builder or setup environment to supply a region.」

AWS Toolkit for Eclipseをセットアップ(2021年版)の環 …

東京リージョンでAWS Control Towerランディングゾーンをセットアップする

AWS Control Towerの最初の画面で[ランディングゾーンの設定]を押 …

AWS Storage Gatewayボリュームゲートウェイを作成してWindowsから使用

ボリュームゲートウェイの作成 Storage Gateway作成メニューからボリ …

EC2 Amazon Linux 2 にAmazon LinuxからWordPressを移行

このブログを新しいインスタンスに移行することにしました。 2015年5月にAma …

Microsoft TeamsのOutgoing Webhooksを使ってAWS Lambda(Python), Amazon API Gatewayとbot

Microsoft Teamsの検証その2、Slackで実装しているbotも対応 …

EC2スケジュールリザーブドインスタンスって終わりましたん?

ユーザーガイドのScheduled Reserved Instancesを見ると …