LoginSignup
4

More than 3 years have passed since last update.

【API Gateway】APIの管理

Posted at

アクセス制御

API Gatewayおよびアップストリームへのアクセス制御には以下4つの方法がある

1. リソースポリシー

JSON形式のリソースポリシーを定義することで、API Gatewayにアクセスを許可/拒否するリソース・アクセスソース・アクションを指定可能

指定出来るアクセスソースは以下の3種類
任意のAWSアカウントのIAMユーザー
アクセス元のIPアドレス
任意のアカウントのVirtual Private Cloud(VPC)またはVPCエンドポイント

(例)"aws:SourceIP"で指定したCIDRブロックからのAPIを拒否するリソースポリシー

リソースポリシー
{
  "Version": "2020-11-30",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "execute-api:Invoke",
      "Resource": [
        "arn:aws:execute-api:region:account-id:api-id/*"
      ]
    },
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": "execute-api:Invoke",
      "Resource": [
        "arn:aws:execute-api:region:account-id:api-id/*"
      ],
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": ["192.0.3.0/24", "198/51/100.0/24"]
        }
      }
    }
  ]
}

2. IAM認証

APIの各要素へのアクセス権限を設定したIAMポリシーを作成し、IAMユーザーやIAMロールに付与することで、APIへのアクセスの制御が可能になる
(※ 対象のAPIメソッドでIAM認証を有効化する必要あり)

3. Lambdaオーソライザー

LambdaオーソライザーというLambda関数を作成することで、認証プロバイダーでの認証結果をもとにAPIへのアクセス制御をメソッド単位で行うことが可能

以下、Lambdaオーソライザーを用いてAPIアクセスを行うフロー
1. 認証プロバイダーで認証を行い、トークンを取得する
2. トークンを含めてAPIリクエストを行う
3. API Gatewayがトークンの値をもとにLambdaオーソライザーで認可を行う
4. 認可の結果をもとにAPI Gatewayがリクエストを許可・拒否する

4. Cognitoオーソライザー

認証プロバイダーとしてCognitoユーザープールを用いることで、認証プロバイダーでの認証結果をもとにAPIへのアクセス制御をメソッド単位で行うことが可能

以下、Cognitoオーソライザーを用いてAPIアクセスを行うフロー
1. Cognitoユーザープールで認証を行い、トークンを取得する
2. トークンを含めてAPIリクエストを行う
3. API Gatewayがトークンの値をもとにCognitoユーザープールで認可を行う
4. 認可の結果をもとにAPI Gatewayがリクエストを許可・拒否する

スロットリング

スロットリング設定を行いリクエスト数を制限することで、アップストリームで処理するリクエスト数を制御することが出来る

  • AWSアカウント単位・メソッド単位・APIキー単位で設定が可能
  • レート(1秒あたりのリクエスト数)と バースト(リクエストの同時実行数)を設定する

使用量プランとAPIキー

APIキー:API Gatewayの使用量を制限するために発行するアクセスキー
(各APIメソッドでAPIキーを使用する設定にすると、APIメソッドを実行するリクエストにはAPIキーが必須となる)

  • APIキーの使用量制限は、使用量プラン という設定項目でスロットリング設定を行い、APIキーを使用量プランに紐付けることで設定可能
  • 使用量プランのスロットリング設定では、レート・バーストの他に クォータ(日・週・月あたりのリクエスト数)を設定する

モニタリング

CloudWatch, CloudTrail, X-Rayと連携して監視を行うことが可能
マネージメントコンソール上に標準で用意されている API Gateway ダッシュボードで、各APIの利用状況をステージごとに可視化して確認出来る

標準で以下項目の確認が可能

  • API呼び出し
  • キャッシュヒット(APIキャッシュが有効の場合のみ)
  • キャッシュミス(APIキャッシュが有効の場合のみ)
  • レイテンシー
  • 統合のレイテンシー
  • 4XXエラー・5XXエラーの数

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4