手順はたった2つ AWS Lambda環境変数の使い方!暗号化についても説明します

本日はAWS Lambdaの変数の使い方についてお話いたします。
AWS Lambda関数には環境変数を設定することができ、使用場面としては『コードに機密情報、セキュリティレベルの高い情報を入れたくない』と言う時などに使用されます。それでは、さっそく使い方を紹介いたします。

使い方を紹介した後は実践的な使い方についてご紹介致します。

  • 1.実施手順
  • 1-1.Lambdaの設定から環境変数を入力
  • 1-2.コードに「import os」を入力
  • 2.応用編-環境変数を暗号化して見えなくしよう
  • 2-1.暗号化用のキーを作成
  • 2-2.Lambdaがキーにアクセスするため許可ポリシー作成
  • 2-3.環境変数を暗号化しよう
  • 2-4.暗号を複合するコードをLambdaに入れよう

実施手順

実施手順はたった以下の2つです。
①Lambdaの設定から環境変数を入力
②コードに「import os」を入力

では実際にやっていきましょう。

1-1.Lambdaの設定から環境変数を入力

以下の画面から環境変数の設定を行っていきます。以下の画面から『編集』ボタンを押します。

すると以下の画面になり、「環境変数の追加」ボタンを押すと以下のように入力欄が出てきます。

以上で環境変数の入力手順は完了です。

1-2.コードに「import os」を入力

環境変数を入力する時はOSモジュールをインストールしなければなりませんので、コードの最初に『import os』を入力します。
そして、環境変数の値を取り出す際は『os.environ[‘環境変数キー’]』を使います。

※以下コードをべた張りする際は、インデントを整えて貼り付けるようお願いします。コードの行頭の空白はスペースになっているのでタブにするようにしてください。

  1. import os
  2. def lambda_handler(event, context):
  3.  #valueという変数に環境変数に設定した値を入れます。
  4.  value = os.environ['test']
  5.  #valueの中身を表示します。
  6.  print(value)

2.応用編-環境変数を暗号化して見えなくしよう

環境変数はコードに埋め込みたくない機密的な情報が入ることが多いです。第三者が見れないよう暗号化しましょう。

2-1.暗号化用のキーを作成

まずは暗号化するためのキーを作成します。AWSconsoleにログインし、KMSの画面に行き、「カスタマー管理型のキー」を選択します。基本的にはデフォルト設定で作成していって問題ありませんが、キーポリシー(キーに対するアクセス権が書かれているポリシー)は編集が必要です。キーポリシーの「Allow」の「Action」のフィールドに暗号化が可能になる「kms:Encrypt」を追加しましょう。最後に完了ボタンを押せば作成完了です。

2-2.Lambdaがキーにアクセスするため許可ポリシー作成

今度はLambdaに付けるIAM許可ポリシーです。LambdaからKMSへアクセスできるようLambdaにIAMポリシーを付けてあげる必要があります。 「kms:Decrypt」を許可してあげれば大丈夫です。私は以下のIAM許可ポリシーを作成しLambdaの実行ロールにアタッチしました。Lambdaの実行ロールの確認場所は対象のLambda関数の画面から「設定」タブ>「アクセス権限」>「実行ロール」>「ロール名」で確認できます。

※以下コードをべた張りする際は、インデントを整えて貼り付けるようお願いします。コードの行頭の空白はスペースになっているのでタブにするようにしてください。

  1. {
  2.     "Version": "2012-10-17",
  3.     "Statement": [
  4.         {
  5.             "Sid": "VolumeEncryption",
  6.             "Effect": "Allow",
  7.             "Action": [
  8.                 "kms:Encrypt",
  9.                 "kms:Decrypt",
  10.                 "kms:DescribeKey"
  11.             ],
  12.             "Resource": "*",
  13.             }
  14.         }
  15.     ]
  16. }

2-3.環境変数を暗号化しよう

対象のLambda > 設定 > 環境変数 > 編集 を押して環境変数の編集画面に行きます。 「暗号化の設定」の▶ボタンを押して暗号化画面を展開します。 展開すると「転送時の暗号化に使用するヘルパーの有効化」のチェックボックスが出てきます。 それにチェックを入れると、キーと値の右に「暗号化」のボタンが出てきますのでクリックします。

「転送時の暗号化を行うための AWS KMS キー」に先ほど作成したKMSキーのARNを入力します。 この画面の「シークレットスニペットの復号」は後でコードに埋め込んで復号処理を行いますので、どこかに控えておいた方がよいかもしれません。 以下の画面でKMSキーを入力したら、暗号化ボタンを押します。

値が暗号化されました。保存ボタンを押して設定完了です。

2-4.暗号を複合するコードをLambdaに入れよう

先ほど出てきた「シークレットスニペットの復号」でメモしたコードをそのままべた張りします。

※以下コードをべた張りする際は、インデントを整えて貼り付けるようお願いします。コードの行頭の空白はスペースになっているのでタブにするようにしてください。

  1. import os
  2. import boto3
  3. from base64 import b64decode
  4.  
  5. ENCRYPTED = os.environ['test']
  6. DECRYPTED = boto3.client('kms').decrypt(
  7.     CiphertextBlob=b64decode(ENCRYPTED),
  8.     EncryptionContext={'LambdaFunctionName': os.environ['AWS_LAMBDA_FUNCTION_NAME']}
  9. )['Plaintext'].decode('utf-8')
  10.  
  11. def lambda_handler(event, context):
  12.     #valueという変数に環境変数に設定した値を入れます。
  13.     value = os.environ['test']
  14.     #valueの中身を表示します。
  15.     print(value)

以上で暗号化も完了です。本記事はこれで終了となります。最後までご覧いただきありがとうございました。

IT未経験で働きながら3カ月程度でAWSソリューションアーキテクト-プロフェッショナルを取得できたので学習法をご紹介

プログラミング独学で、未経験でIT企業に転職した話をしますー未経験から、独学で、IT業界に転職する方法と勉強時間

コメント

  1. […] 手順はたった2つ AWS Lambda環境変数の使い方!暗号化についても説明します […]

コメントは受け付けていません。