目次

Application Security 層を使用してAWS Lambda 機能を保護する

Application Security は、AWS Lambda 機能を保護するためのセキュリティレイヤを提供します。セキュリティ層には、 Lambda 機能の自己保護に関するすべてのセキュリティコントロールが含まれます。

これは、PythonおよびNode.jsプログラミング言語でのみサポートされます。

Lambda関数 に保護を追加するのは簡単で、 Application Security 層を追加し、ハンドラとセキュリティ層に必要な設定を追加するだけで済みます。インストールと設定は、関数プログラミング言語とAmazon Linuxのバージョンによって異なります。

AWS Lambdaで保護レイヤを設定する

  1. AWSアカウントで、[ Lambda > Functions ]に移動し、保護する機能を選択します。
  2. [Function Overview]で、[ Layers ]を選択して、レイヤの設定ビューを表示します。
  3. [ Add layer ]を選択します。[ Choose a layer ]ビューで、[ Specify an ARN ]を選択します。[ Specify an ARN ]テキストボックスに、 Application Security 保護層のARNを指定します。AWSのPythonレイヤLambdaまたはAWS用のNodeJSレイヤLambda で適切なARNを見つけます。

    スクリーンショット

  4. 必要なランタイムを設定します。

    • 機能の概要から、[ Runtime settings ]パネルまでスクロールし、[ Edit]を選択して、メニューから必要な[ Runtime ]を選択します。選択するレイヤとランタイムは、関数のプログラミング言語に関連するものである必要があります。

      スクリーンショット

セキュリティ層を有効にするハンドラとハンドラの設定は、関数のプログラミング言語とAmazon Linuxのバージョンによって異なります。

マルチリージョン対応エージェントの接続

最近のバージョンのエージェントにはマルチリージョン対応の接続機能があり、エージェントはどのリージョンに接続するかを自動的に判断できます。これらのエージェントの場合は、エージェントに設定を追加する必要はありません。つまり、hello_url設定パラメータをエージェント設定に追加する必要はありません。エージェントのマルチリージョン対応接続モジュールを使用すると、最も近いリージョンが正しくない場合に、エージェント接続を正しいリージョンにリダイレクトできます。詳細については、さまざまなリージョンでの Application Security の利用を参照してください。

現在、「hello-url」設定を必要としないエージェントのバージョンは、Pythonエージェント4.6.2とJava 4.4.4のみです。

Amazon Linux 2でPython 3.8のハンドラを設定する

ハンドラを設定するには、Amazon Linux 2でPython 3.8を使用するときに、次の環境変数を指定した値に設定します。

AWS_LAMBDA_EXEC_WRAPPER=/opt/trend_app_protect
[ハンドラ]テキストボックスで設定する値は、プログラミング言語、ファイル名、および関数名によって異なります。Pythonの場合、ハンドラは <filename>.<function name>に設定されます。詳細については、AWSのドキュメントを参照してください。

Amazon Linuxで3.8より前のPythonバージョンのハンドラを設定する

Amazon LinuxでPython 3.7を実行する場合は、 Application Security ハンドラを呼び出すようにハンドラを設定する必要があります。これにより、関数ハンドラが呼び出されます。次の手順を実行します。 1. ハンドラをtrend_app_protect_handler.handlerに設定する 2. 環境変数を関数ハンドラに設定します。

TREND_AP_HANDLER=<filename without extension>.<function name>

この環境変数は、 Lambdaの元のハンドラに設定する必要があります。 Lambda ハンドラによっては、代わりに TREND_AP_HANDLER=<filename_without_extension>.<function name> を使用する必要があります。

NodeJSの任意のバージョンのハンドラを設定する

ハンドラを設定するには、任意のバージョンのNodeJSを使用するときに、次の環境変数を設定します。

AWS_LAMBDA_EXEC_WRAPPER=/opt/trend_app_protect
[ハンドラ]テキストボックスで設定する値は、プログラミング言語、ファイル名、および関数名によって異なります。NodeJSの場合、ハンドラは <filename>.<name of the exported handler module>に設定されます。詳細については、AWSのドキュメントを参照してください。

  1. Application Security 層で機能を保護するには、 Application Security グループのKeyとSecretを環境変数として設定する必要があります。 Environment variables セクションに、以下のスクリーンショットに示すように値を入力します。

    スクリーンショット

Application Security グループのキーとシークレットを確認するには、 Application Security ダッシュボードに移動し、グループの設定ページに移動します。[キー]と[シークレット]が[ Group Credentials]に表示されます。

Amazonリソースネーム(ARN)

Application Security 保護レイヤは、 複数のAWSリージョンで使用できます。

保護層のARNは、ラムダ関数のプログラミング言語と言語バージョンに依存します。 保護層のARN構造は次のとおりです。

arn:aws:lambda:<aws region>:800880067056:layer:CloudOne-ApplicationSecurity-<language>:<layer version>
- aws region = eu-north-1, ap-south-1, eu-west-1, eu-west-2, eu-west-3, ap-northeast-1, ap-northeast-2, ap-southeast-1, ap-southeast-2, sa-east-1, ca-central-1, eu-central-1, us-east-1, us-east-2, us-west-1、または us-west-2

AWS Lambda 保護レイヤの言語バージョン

言語 レイヤバージョン 説明
python 1 Python 3.7および3.8の場合
nodejs10_x 1 NodeJS 10の場合
nodejs12_x 1 NodeJS 12の場合
nodejs14_x 1 NodeJS 14の場合

たとえば、次のとおりです。 ラムダ関数がリージョン us-east-1 にデプロイされ、Python 3.7で実装されている場合、ARNは次のようになります。

arn:aws:lambda:us-east-1:800880067056:layer:CloudOne-ApplicationSecurity-python:1

AWSofficialランタイムの Lambda の追加設定

Application Security 保護レイヤを使用する場合は、追加の設定を環境変数として設定する必要があります。TREND_AP_KEYおよびTREND_AP_SECRETに加えて、次を追加します。

スクリーンショット

TREND_AP_KEY: < key from Application Security Dashboard >
TREND_AP_SECRET: < secret from Application Security Dashboard >
TREND_AP_READY_TIMEOUT: 30
TREND_AP_TRANSACTION_FINISH_TIMEOUT: 10
TREND_AP_MIN_REPORT_SIZE: 1
TREND_AP_INITIAL_DELAY_MS: 1
TREND_AP_MAX_DELAY_MS: 100
TREND_AP_HTTP_TIMEOUT: 5
TREND_AP_PREFORK_MODE: False
TREND_AP_CACHE_DIR: /tmp/trend_cache
TREND_AP_LOG_FILE: STDERR

環境変数の設定の詳細については、「 環境変数」を参照してください。