AWS - Lambda Enum
Lambda
Amazon Web Services(AWS)Lambdaは、サーバーのプロビジョニングや管理の必要性なしにコードの実行を可能にするコンピュートサービスとして説明されています。コードの実行に必要なリソース割り当てを自動的に処理し、高可用性、スケーラビリティ、セキュリティなどの機能を確保する能力で特徴付けられています。Lambdaの価格モデルの重要な側面は、コンピュート時間のみに基づいて料金が発生するため、初期投資や長期の契約の必要性がなくなります。
Lambdaを呼び出すには、Cloudwatchを使用して頻繁に呼び出すことができます。URLエンドポイントを公開して呼び出したり、API Gatewayを介して呼び出したり、S3バケット内のデータの変更やDynamoDBテーブルの更新などのイベントに基づいて呼び出すことも可能です。
Lambdaのコードは**/var/task
**に保存されています。
Lambdaエイリアスの重み
Lambdaには複数のバージョンが存在します。 そして、エイリアスを介して公開されているバージョンが複数存在することがあります。エイリアス内で公開されている各バージョンの重みが、どのエイリアスが呼び出しを受け取るかを決定します(たとえば、90%-10%のような割合になることがあります)。 エイリアスの1つのバージョンが脆弱である場合、脆弱なバージョンが攻撃を受けるまでリクエストを送信することができます。
リソースポリシー
Lambdaリソースポリシーを使用すると、他のサービス/アカウントがLambdaを呼び出すためのアクセス権を与えることができます。 たとえば、これはURLを介して公開されたLambdaにアクセス権を与えるポリシーです:
または、API Gatewayがそれを呼び出すことを許可するためのポリシー:
Lambdaデータベースプロキシ
数百の同時Lambdaリクエストがある場合、それぞれがデータベースに接続して接続を閉じる必要があると、うまくいかないことがあります(Lambdaはステートレスであり、接続を維持することができません)。 そのため、Lambda関数がデータベースインスタンスの代わりにRDS Proxyとやり取りする場合、同時に作成された多数のLambda関数によって作成された多数の同時接続のスケーリングに必要な接続プーリングを処理します。これにより、Lambdaアプリケーションは、新しい接続を作成するのではなく、既存の接続を再利用することができます。
Lambda EFSファイルシステム
データを保存したり共有したりするために、LambdaはEFSにアクセスしてマウントすることができます。これにより、Lambdaはそれから読み書きすることができます。
Lambdaレイヤー
Lambdaのレイヤーは、追加のコードやその他のコンテンツを含む**.zipファイルアーカイブ**です。レイヤーにはライブラリ、カスタムランタイム、データ、または構成ファイルを含めることができます。
1つの関数に最大5つのレイヤーを含めることができます。関数にレイヤーを含めると、内容が実行環境の/opt
ディレクトリに展開されます。
デフォルトでは、作成したレイヤーはAWSアカウントにプライベートです。他のアカウントとレイヤーを共有するか、レイヤーを公開するかを選択できます。別のアカウントが公開したレイヤーを消去した後も、あなたの関数はそのレイヤーバージョンを引き続き使用できます。ただし、削除されたレイヤーバージョンを使用して新しい関数を作成したり、関数を更新したりすることはできません。
コンテナイメージとして展開された関数は、レイヤーを使用しません。代わりに、イメージをビルドする際に好みのランタイム、ライブラリ、およびその他の依存関係をイメージにパッケージ化します。
Lambda拡張機能
Lambda拡張機能は、さまざまな監視、可観測性、セキュリティ、ガバナンスツールと統合することで、関数を強化します。これらの拡張機能は、Lambdaレイヤーを使用して.zipアーカイブを追加したり、コンテナイメージデプロイメントに含めたりすることで追加され、内部および外部の2つのモードで動作します。
内部拡張機能は、言語固有の環境変数とラッパースクリプトを使用して、ランタイムプロセスと統合し、その起動を操作します。このカスタマイズは、Java Correto 8および11、Node.js 10および12、.NET Core 3.1などのランタイムに適用されます。
外部拡張機能は、別のプロセスとして実行され、Lambda関数のライフサイクルと操作が整合されます。これらは、Node.js 10および12、Python 3.7および3.8、Ruby 2.5および2.7、Java Corretto 8および11、.NET Core 3.1、およびカスタムランタイムなどのさまざまなランタイムと互換性があります。
列挙
ラムダを呼び出す
手動
公開されたURLを介して
URLを介してLambda関数を呼び出す
これから実行可能なLambda関数を見つける時が来ました。
以下は、AWS Lambda関数「Level6」が利用可能です。どのように呼び出すかを見つけてみましょう:
これで、名前とIDがわかったので、名前を取得できます:
そして最後に、関数にアクセスして関数を呼び出します(URLにID、名前、関数名が表示されていることに注意してください): https://s33ppypa75.execute-api.us-west-2.amazonaws.com/Prod/level6
URL:
https://<rest-api-id>.execute-api.<region>.amazonaws.com/<stageName>/<funcName>
その他のトリガー
Lambdaをトリガーするための他のソースがたくさんあります
特権昇格
次のページでは、Lambdaの権限を悪用して特権を昇格する方法を確認できます:
pageAWS - Lambda Privesc認証されていないアクセス
pageAWS - Lambda Unauthenticated Access攻撃後の処理
pageAWS - Lambda Post Exploitation永続性
pageAWS - Lambda Persistence参考文献
最終更新