ヤマムギ

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認定資格試験テキスト AWS認定AIプラクティショナー」という本を書きました。

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

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

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

 - AWS , ,

  関連記事

当ブログ(WordPress)のCloudFrontのキャッシュヒット率があがった

当ブログの構成です。 S3とALB+EC2 Auto Scalingで構成してい …

JAWS-UG関西IoT専門支部 ✕ SORACOM UG 関西「Wio LTE + 絶対圧センサーで遊ぼう!」ワークショップにいってきた

JAWS-UG関西IoT専門支部 ✕ SORACOM UG 関西「Wio LTE …

AWS Database Migration Service(DMS)チュートリアル

公式ユーザーガイドのAWS Database Migration Service …

AWS CDKでリージョンをまたいだクロススタックリファレンスはできなかった

例えばこんなコードが実行できるかというと、 [crayon-6961b32f60 …

BearからNotionへの引っ越し(Amazon Q Developer for CLIに丸投げ)

MacとiPhoneでのテキスト管理と共有で長年Bearを使っていましたが、Wi …

AWS LambdaでS3 Select

RDSスナップショットをS3にエクスポートした、Parquetフォーマットのデー …

Organizations対応のAWS CloudTrailのAthenaテーブルでPartition Projectionを使用しました

パーティション向けのAlterテーブルの定期実行が面倒だと思っていたら、Part …

AWS Transit Gateway Network ManagerにTransit Gatewayを登録してルートアナライザーで確認

グローバルネットワークの作成 VPC左ペインのメニュー Transit Gate …

API Gatewayから直接 DynamoDBに書き込む

やりたいこと WebページでOやXを押したときに、どっちを押したかをDynamo …

「JAWS-UG朝会 #18」で主にAWSなブログについて発表をしました

ラジオ体操 いつものラジオ体操から。 今日はラーニングセンターから配信の日でした …