ヤマムギ

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

  関連記事

AWSアカウントの解約

アカウント作成メニュー確認のために作成したAWSアカウントを解約しました。 使っ …

EC2:RunInstances APIにリクエストしてEC2インスタンスを起動(署名バージョン4、Postman)

AWSのAPIリクエストってHTTPでもよかったですよね?って思って、確認のため …

Amazon Location Service入門ワークショップ-ジオフェンス

関連記事 Amazon Location Service入門ワークショップの前提 …

Amazon EC2のスクリーンショットとは

ドキュメント見てたらAmazon EC2でスクリーンショットって機能があったので …

Amazon Glacierでボールトロックポリシーの作成開始をしてみました

Glacierを単体で使用することもそうそうないので、確認しました。 まずボール …

WordPressのwp-login.php , xmlrpc.phpへのアクセスをAWS WAFで接続元IPアドレスを制限する

AWS CloudWatch LogsエージェントでAmazon EC2上のNg …

「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト – プロフェッショナル」を執筆しました

「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテク …

AWS SSOのパスワードリマインダーでADのパスワードを変更

AWS Managed Microsoft ADを構築してユーザー追加までで構築 …

Amazon Keyspacesのキースペースを作成してみました

Amazon Keyspaces(Apache Cassandra互換のマネージ …

東京リージョンの1つのAZ(apne1-az2)でt3.nanoスポットインスタンスが拒否されちゃいました

拒否されちゃいました ちょっとした検証をしようとしてて、t3.nanoのスポット …