Amazon EC2(Linux)にSwap領域を追加する。 IT by NHM - 2021-06-022021-06-02 やはり基本は公式から ハードドライブ上のパーティションを使用して、Amazon EC2 インスタンスのスワップ領域として機能するようにメモリを割り当てるにはどうすればよいですか?https://aws.amazon.com/jp/premiumsupport/knowledge-center/ec2-memory-partition-hard-drive/ スワップファイルを使用して、Amazon EC2 インスタンスのスワップ領域として機能するようにメモリを割り当てるにはどうすればよいですか?https://aws.amazon.com/jp/premiumsupport/knowledge-center/ec2-memory-swap-file/ t2.microはこんな感じ。これではすぐにやられてしまう。 $ free -m. total used free shared buff/cache available. Mem: 983 449 255 0 278 401. Swap:
EC2のスワップ領域について IT by NHM - 2021-04-072021-04-07 スワップ領域なんてものは普通はある程度は設定されているだろうって思いがち。 たまたまTOPで確認していたらswapが0なんですけど! free -m total used free shared buff/cache available Mem: xxx xxx xxx 0 xxx xxx Swap: 0
セキュリティ監査ツールScout Suiteを利用してクラウド環境をチェックしてみる。(AWS編) IT by NHM - 2021-04-022021-04-02 公式ページ https://github.com/nccgroup/ScoutSuitehttps://github.com/nccgroup/ScoutSuite なにはともあれwiki Home · nccgroup/ScoutSuite Wiki · GitHubhttps://github.com/nccgroup/ScoutSuite/wiki 対応はAWS, Azure, GCP。コマンド引数でプラットフォームを指定。 Amazon Web Services $ python scout.py aws $ python scout.py aws --profile PROFILE (通常のawsコマンドと同じくprofile指定もできる模様) Azure $ python scout.py azure --cli Google Cloud Platform $ python scout.py gcp --user-account pythonで動く。対応バージョンは3.6~3.8 python -V Python 3.8.7 pipも確かめる。そういえばpyenvで設定したんだった。 pip -V pip 20.2.3 from /Users/xxxx/.pyenv/versions/3.8.7/lib/python3.8/site-packages/pip (python 3.8) MacOSなのでオープンファイル数をあげておく(とりあえず現在セッションだけ)。.bash_profileなどに追加しておいたほうが楽。 ulimit -Sn 1000 インストール実行! pip install scoutsuite エラー! pipが古い。アップデートしろと。 =============================DEBUG ASSISTANCE============================= If you are seeing a compilation error please try the following steps to successfully install cryptography: 1) Upgrade to the latest pip and try again. This will fix errors for most users. See: https://pip.pypa.io/en/stable/installing/#upgrading-pip
S3アクセスにはレガシーエンドポイントやレガシーグローバルエンドポイントを利用するのはやめよう! IT by NHM - 2021-03-242021-03-24 レガシーエンドポイント:https://bucket-name.s3-Region.amazonaws.com レガシーエンドポイントhttps://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/VirtualHosting.html#s3-legacy-endpoints ログにレガシーエンドポイントが表示される場合もありますが、バケットにアクセスするには、常に標準のエンドポイント構文を使用することをお勧めします。https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/VirtualHosting.html#s3-legacy-endpoints レガシーグローバルエンドポイント:https://bucket-name.s3.amazonaws.com レガシーグローバルエンドポイントhttps://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/VirtualHosting.html#deprecated-global-endpoint 他のリージョンに対する仮想ホスティング形式のリクエスト、パス形式のリクエスト(307が返却される模様)https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/VirtualHosting.html#deprecated-global-endpoint ついでにレガシーグローバルエンドポイントでのルーティング(利用はやめておいた方が良いってよく理解できる図ですね) リクエストのリダイレクトと REST APIhttps://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/Redirects.html
Amazon Linux2のタイムゾーンを変更する。 IT by NHM - 2021-03-172021-03-17 デフォルトではUTCになっている。これは日本時間人間としてはちょっと困る。+9hすればいいだけだが。 $ date 2021年 3月 17日 水曜日 08:10:40 UTC というわけでいつものAWSドキュメント Amazon Linux での タイムゾーンの変更https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/set-time.html#change_time_zone まずは設定可能なタイムゾーンを確認する。 ls /usr/share/zoneinfo Africa Canada GB Indian Mexico ROK iso3166.tab America Chile GB-Eire Iran NZ Singapore leapseconds Antarctica Cuba GMT Israel NZ-CHAT Turkey posix Arctic EET GMT+0
S3でSSLアクセス必須にする。 IT by NHM - 2021-03-102021-03-10 HTTPSでのみ誰でもアクセス可能。HTTPは不可。 { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::aaaaaaaa/*", "Condition": { "Bool": {
Lambdaイベントの処理方法 IT by NHM - 2021-03-102021-03-10 とりあえずjsonでパースしとけば良い。↓はS3 putイベント t_json = JSON.parse(event.to_json) records = t_json["Records"] records.each do |record| key = record["s3"]["object"] end Proxy利用したapi gatewayのbody取得は↓の感じ。 if t_json['isBase64Encoded'] body = JSON.parse(Base64.decode64(t_json['body'])) else body = JSON.parse(t_json['body']) end なお、テストイベントはフォーマットの確認もできるのでまじ便利。
Lambdaのイベントと環境ログ IT by NHM - 2021-03-102021-03-10 Ruby の AWS Lambda 関数ログ作成https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/ruby-logging.html サンプルはto_aで出力してるが、私は↓の方が好き。 logger.debug('## ENVIRONMENT VARIABLES') ENV.each do |variable| logger.debug("#{variable[0]} = #{variable[1]}") end logger.debug('## EVENT') event.each do |key,value| logger.debug("#{key} = #{value}") end
Lambdaの環境変数をKMSで暗号化しておく IT by NHM - 2021-03-102021-03-10 1.関数を作成する 2.関数に紐づけられたロールを確認する(「設定」ー「アクセス権限」で確認可能。リンククリックするとIAMに飛ぶ)。 3.KMSで鍵を作成する(カスタマー管理型のキー)。 4.ロールに割り当てる。 5.作成した鍵のエイリアスとARNを覚えておく。 6.Lambdaに戻って関数の環境変数を設定し、「暗号化」を押す 7.実行ロールポリシーをコピーして別ウインドウを開いて、IAMに割り当てる。今回は復号なのでDecryptだけで良い。 8.lambdaを開いているウインドウに戻って「暗号化」を押す。Valueが暗号化された。 9.復号化する(シークレットスニペットの復号をコピーして利用する) require 'aws-sdk-kms' require 'base64' ENCRYPTED = ENV['test'] require 'json' require 'aws-sdk-kms' require 'base64' ENCRYPTED = ENV['test'] # Decrypt code should run once and variables stored outside of the function # handler so that these are decrypted once per container DECRYPTED = Aws::KMS::Client.new .decrypt({ ciphertext_blob: Base64.decode64(ENCRYPTED), encryption_context: {'LambdaFunctionName' => ENV['AWS_LAMBDA_FUNCTION_NAME']}, }) .plaintext def lambda_handler(event:, context:) # TODO implement { statusCode: 200, body: JSON.generate("Hello from Lambda! #{DECRYPTED}") } end 10.デプロイしてテスト呼び出し。成功 Appendix 今回作成したものの削除順序 1.IAMからKMSの内容を削除する。 2.Lambda関数を削除する 3.KMSを削除する(削除待機日数7~30を指定) 4.IAMを削除する。 5.Cloudwatchのロググループを削除する。
Lambda無料枠の計算 IT by NHM - 2021-03-092021-03-10 AWS Lambda 料金https://aws.amazon.com/jp/lambda/pricing/ なんちゃって計算式シート 1.計算方法はAWSのLAMBDA料金表を開いてリージョンの料金をシートに反映。 2.メモリサイズを設定 3.実際に稼働させてみてメトリクスより実行時間を取得 これでおおよその金額が計算できる。