Category: Amazon EC2 Systems Manager*


新発表 – Amazon CloudWatch AgentとAWS Systems Managerとの連携 – 統一されたメトリクスとログの収集をLinuxとWindowsに

WindowsとLinuxのインスタンスやオンプレミスサーバから、Amazon CloudWatchにメトリクスやログファイルを送信するために利用できる、いくつものエージェント、デーモン、そしてスクリプトをこれまで紹介してきました。こうした異なるツールから収集されたデータによって、計算リソースの状態や挙動を可視化することができ、値が正常域を外れた時や問題のある可能性が見られた時にアクションを起こすこともできます。CloudWatch Dashboardsでどんな欲しいメトリクスもグラフにすることができ、CloudWatch Alarmsでアクションを起こすこともでき、CloudWatch Logsでエラーメッセージを見つけるために検索もでき、カスタムの高解像度メトリクスサポートの利点も享受することができます。

新しい統一エージェント

2017年12月14日に、我々はさらに一歩進めて、新しい統一されたCloudWatch Agentをリリースしました。これはクラウドでもオンプレミスでも、LinuxでもWindowsでも実行でき、メトリクスとログファイルを取り扱えます。デプロイするにはAWS Systems Manager (SSM) Run CommandSSM State Manager、またはCLIを利用できます。以下が、いくつかの最も重要な機能になります:

単一のエージェント – メトリクスとログの両方を単一のエージェントで収集できます。これによって、セットアップ手順を簡略化でき複雑さを減らすことができます。

複数プラットフォーム / 複数環境 – 新しいエージェントはクラウドでもオンプレミスでも実行可能で、64-bit Linuxと64-bit Windows上で動かせ、HTTPプロキシもサポートしています。

設定可能 – 新しいエージェントは自動的に最も役に立つシステムメトリクスを取得します。さらに、CPUスレッド、マウントしたファイルシステム、そしてネットワークインタフェースといった、より詳細なメトリクスやサブリソースを数百集めることもできます。

CloudWatch親和性 – 新しいエージェントは標準の1分間隔メトリクスも、新しい1秒間隔の高解像度メトリクスもサポートしています。インスタンスID、イメージID、Auto Scaling Group名等のEC2のディメンジョンを自動的に含めてくれますし、カスタムディメンジョンの利用もサポートしています。全てのディメンジョンを使って、Auto Scaling Groupやアプリケーションにまたがった集約が可能です。

移行 – 既存のAWS SSMとEC2Configの設定から、簡単に新しいエージェントを使う様に移行することができます。

エージェントをインストールする

CloudWatch AgentはEC2インスタンスで動く場合にはIAM roleを使い、オンプレミスサーバで動く場合にはIAM userを使います。roleもしくはuserはAmazonSSMFullAccessAmazonEC2ReadOnlyAccessポリシーを持っている必要があります。以下が私のroleです:

これを既に実行中のインスタンスに簡単に追加できます (これは比較的新しいEC2の非常に便利な機能です):

SSM Agentをインスタンス上で既に実行しています。もしまだであれば、SSM エージェント をインストールし設定するの手順に従ってセットアップします。

次に、AWS Systems Managerを使ってCloudWatch Agentをインストールします:

これは数秒で終わります。これで、簡単なウィザードを使ってエージェントの設定ファイルをセットアップします:

ウィザードでは監視するログファイルのセットアップもできます:

ウィザードはJSON形式の設定ファイルを生成し、インスタンス上に保存します。その後、他のインスタンスへのデプロイを可能にするためにParameter Storeへのアップロードをするかどうかの選択肢を聞いてきます(ファイルを編集することでもっと詳細なメトリクスとログ収集の設定も可能です):

これでRunCommandを使いParameter Storeの設定名を与えて、CloudWatch Agentを起動することができます。

これは数秒で終わり、エージェントはすぐにメトリクスを送信開始します。先に述べた通り、エージェントはインスタンスの中やアタッチされたリソースの詳細なメトリクスを送信可能です。た取れば、以下は各ファイルシステムのメトリクスです:

監視しているログファイル毎に、各インスタンスで別々のlog streamがあります:

他のlog streamでできることと同様に、ログを見たり検索することができます:

今から利用可能です

新しいCloudWatch Agentは全てのパブリックAWSリージョンで利用可能です。AWS GovCloud (US)と中国内のリージョンは今後リリースしていきます。

エージェントには全く料金はなく、通常のCloudWatchのログとカスタムメトリクスの料金をお支払頂くだけです。

Jeff;

原文: New – Amazon CloudWatch Agent with AWS Systems Manager Integration – Unified Metrics & Log Collection for Linux & Windows (翻訳: SA岩永)

Amazon EC2 Systems Manager による Microsoft VSS を使用したスナップショットサポート

私たちはここでWindows AMIを稼働させるAmazon EC2におけるMicrosoftボリュームシャドウコピー(VSS)のサポートをアナウンスできることを嬉しく思います。VSSはMicrosoft Windows(主要なSQL ServerやExchange Serverなどのマイクロソフトアプリケーションを含む互換性のある)環境における非常に一般的なボリュームバックアップ技術です。VSSはファイルの書き込みなどのディスク処理をバックアップ処理実行中も適切に管理するため、アプリケーション一貫性を持ったバックアップが可能となります。 アプリケーション一貫性バックアップは、マシンまたはインスタンスに接続されたボリュームのバックアップと同時に実行され、メモリ内のすべてのデータと処理中のすべてのトランザクションをキャプチャします。

VSSが有効なAmazon EBSボリュームのスナップショット(以降、”VSS有効化スナップショット”と表記) は、Amazon EC2 Systems ManagerのRun Commandから使用可能です。AWSEC2-CreateVssSnapshot コマンドによってWindowsインスタンスのEC2にアタッチされたEBSボリュームを、バックアップ処理の間トランザクションデータの一貫性を失うことなく、アプリケーション一貫性を持ったスナップショットを取得可能です。この機能によってSQL Backupや、カスタムスクリプトなどによって提供されたアプリケーション固有のバックアップソリューションは不要となります。さらに、イメージレベルバックアップにおけるアプリケーション一貫性を維持するためのサードパーティ製ツールも不要になります。

AWSEC2-CreateVssSnapshotの使用方法

VSS有効化スナップショットは、Windowsが稼働するEC2インスタンスに対してAWSEC2-CreateVssSnapshotコマンドをEC2 Systems Manager Run Commandから呼び出すことで実行します。AWS管理コンソールやAWS CLIから実行したり、PowerShellスクリプトやLambda関数から呼び出すことも可能です。本ブログではEC2コンソールからコマンドで実行する例を示します。

AWSEC2-CreateVssSnapshot Run Command

EC2管理コンソールで、AWSEC2-CreateVssSnapshotコマンドのドキュメントを選択し、VSS有効化スナップショットを取得したいEBSボリュームを持つインスタンスを選択します。 インスタンスを選択した後、スナップショットに追加したい説明やタグを設定します。ブートボリュームをスナップショット処理から除外することも可能です。

Calling AWSEC2-CreataeVssSnapshot Run Command

起動されるとRun CommandはVSSコンポーネント(詳細については後述)に対して、EC2 Windowsインスタンス上のVSS対応アプリケーションのすべての処理中のI/Oをコーディネーションするよう指示します。これによってI/OバッファはEBSボリュームに対してフラッシュされ、すべてのI/Oはスナップショット取得が完了するまでフリーズされます。この結果アプリケーション一貫性が維持されます。スナップショットが取得された後、I/Oフリーズが解除され通常処理に復帰します。

Run Commandやスクリプトから取得したスナップショットは、EC2コンソール左側のEBSスナップショットメニューで確認できます。 このプロセスで正常に取得された全てのVSS有効化スナップショットには “AppConsistent:True”というタグが付与されます。本機能についてのより詳細についてはこちらAWSEC2-CreateVssSnapshot のドキュメントを参照してください。

VSS有効化スナップショットを取得するためのEC2インスタンスの準備

  • インスタンスへのスナップショット許可 : IAMコンソールを開き、”Amazon EC2″サービスに対する以下の権限を許可する新しいポリシーを作成します。
    1. DescribeInstances
    2. CreateTags
    3. CreateSnapshot

またIAMコンソールからAmazon EC2ロールAmazonEC2RoleForSSMに対して上記で作成したポリシーを適用します。さらにこのロールを直接EC2 Windowsインスタンスにアタッチします。

IAM permissions to take VSS-enabled EBS snapshots

  • VSSコンポーネントのインストール : 2017年11月以降のMicrosoft Windows Server AMIイメージにはVSSコンポーネントはプリインストールされています。もし使用しているWindowsインスタンスのパッケージが最新でない場合は、VSSコンポーネント(AwsVssComponents)をAWS-ConfigureAWSPakageコマンドをSystems ManagerのRun Commandから呼び出してインストールする必要があります。

AWS-ConfigureAwsPackage to install VSS components

より詳しいVSS有効化スナップショット取得のためのEC2インスタンスのセットアップについてはこちらAmazon EC2 ドキュメントを参照ください。

Installing VSS components on EC2 instances

AWSEC2-CreateVssSnapshot使用する際には、対象のEC2インスタンスに対してEBSスナップショット作成およびタグ書き込み許可のIAM許可が必要となります。コンプライアンスやポリシーの理由から追加のIAM許諾をインスタンスに付与したくない場合には、カスタム可能なサンプルのスクリプトを活用可能です。このスクリプトの詳細についてはこちらAWSEC2-ManageVssIOに関するドキュメントを参照して下さい。

VSS有効化スナップショットのリストアプロセスは通常のEBSスナップショットと同様です。こちらのリストアのサンプルスクリプトも使用できます。このリストア用スクリプトで、指定されたEBSスナップショットからEC2 Windowsインスタンスにリストアすることが可能です。

About the Author

Purvi Goyal is a Senior Product Manager with the Amazon EC2 team, where she strives to enhance the cloud experience of AWS Enterprise customers. Outside of work, she enjoys outdoor activities like hiking and kayaking.

 

(翻訳:SA松崎, 元の記事はこちらです)

階層とタグによるパラメータの組織化及びAmazon EC2 Systems Manager パラメータ ストアのAmazon CloudWatchイベント

このポストはアマゾンウェブサービスのソフトウェア デベロッパーエンジニアであるLusha Zhang によって書かれました。

 

Amazon EC2 Sysmtes Mangager の一部であるパラメータストアは、平文データ(データベース文字列)または秘密情報データ(パスワード、APIキーなど)を問わず、設定データを管理するための集中化された暗号化ストアを提供します。パラメータストアはAWS CLI、API、およびSDKを介して利用できるため、AWSラムダやAmazon ECSなどのAWSサービス間でパラメータを簡単に参照できます。

 

パラメータストアのその他の記事については、以下を参照してください:

 

パラメータストアは最近、階層化サポートとパラメータのタグ付け、及びCloudWatchイベント サポートをローンチしました。これらの機能によって大規模にパラメータを組織化し、管理することが可能になりました。このポストでは、これらの新しい機能を使ってセキュリティ機能を拡張し改善する方法を示します。

 

階層化パラメータ

パラメータストアの階層化サポートによって、組織構造に基づいたパラータの構造化が可能となります。これはパラメータの編成、クエリ、および権限管理のための強力なツールを提供します。

 

一般的なDevOpsのシナリオでは、開発、ベータ、本番の異なる環境に対してソフトウェアの展開を自動化します。例えば、デプロイメント設定を作成する時に、設定を保存するためにパラメータストアを利用できます。おそらく各デプロイメント環境に最低限の健全なホスト数やパーセンテージを設定しなければならず、それらを環境ごとに異なる値でパラメータストアに保存したいと思うでしょう。

 

Step1. デプロイメント設定のパスを作成する

次のコマンドを使用して、保存するパスとパラメータを作成します:

aws ssm put-parameter --name /DeploymentConfig/Prod/FleetHealth --value 75 --type String

aws ssm put-parameter --name /DeploymentConfig/Beta/FleetHealth --value 20 --type String

 

秘密情報を専用のパスの下に構造化することもできます。例えば、

aws ssm put-parameter –-name /DeploymentConfig/Prod/Password/SQLPassword –-value <password> --type SecureString

 

 

AWS マネジメント コンソールまたはAWS CLから取得したパスごとにパラメータをフィルタすることも可能です。

aws ssm describe-parameters --parameter-filters Key=Path,Option=Recursive,Values=/DeploymentConfig/Prod

 

SecureString型パラメータの利用方法の詳細については、「Ssytem Manager パラメータについて」を参照してください。

 

Step 2. パラメータを使用してデプロイメント設定を管理する

AWS CloudFormationテンプレートを使用してデプロイメント設定を作成した場合は、次の例のように本番ステージに対するFleetHealthを設定することが可能です。

#!/bin/bash

fleetHealth=$(aws ssm get-parameter --name /DeploymentConfig/Prod/FleetHealth --query Parameter.Value)

aws cloudformation create-stack --stack-name <stack_name> --template-url <templateurl> --parameters ParameterKey=FleetHealth,ParameterValue=$fleetHealth

 

再帰フラグをを使用して、本番またはベータ環境のすべての設定パラメータを取り出すことが可能です。そして選択したパラメータを取得するために返された設定階層をパースできます。

aws ssm get-parameters-by-path --path /DeploymentConfig/Prod –-recursive

 

 

階層へのアクセスを制御する

本番およびベータ環境のデプロイメント設定のためのパラメータ階層を作成したので、パラメータへのアクセスを制限したいかもしれません。おそらく開発チームは本番環境のパラメータへはアクセスせず、ベータ環境のパラメータのみにアクセスできる必要があります。

IAMを使用して、ベータ環境のパラメータ階層へのアクセスを制御します。例えば、次のIAMポリシーはユーザーに本番環境パラメータへのアクセスを制限します。

{
"Effect": "Deny",
"Action": [
"ssm:GetParametersByPath"
],
"Condition": {
"StringEquals": {
"ssm:Recursive": [
"true"
]
}
},
"Resource":“arn:aws:ssm:<region>:<account_id>:parameter/DeploymentConfig/Prod*"
}

 

ユーザーが次のコマンドを実行すると、AccessDeniedException を受け取ることになります。

aws ssm get-parameters-by-path --path /DeploymentConfig/Prod —-recursive

 

タグ付けされたパラメータ

タグを使用するとAWSリソースを容易に管理できます。パラメータをタグ付けして、グループ化したり、クエリを行うこともできます。同じデプロイメント設定の例を使用して、タグのキー値が「Password」でタグ値が「Beta」または「Prod」のタグを追加することができます。

aws ssm add-tags-to-resource --resource-type Parameter --resource-id  /DeploymentConfig/Beta/FleetHealth --tags Key=Password,Value=Beta

 

合体されたフィルタ結果を得るために、複数のフィルターを適用することもできます。例えば、Password タグキーと再起フラグつきの /DeploymentConfig/Beta パスを適用して、パスワードに関連したベータ環境のパラメータを取得することができます。

aws ssm describe-parameters --parameter-filters Key=tag:Password Key=Path,Option=Recursive,Values=/DeploymentConfig/Beta

IAMポリシーを使用してセキュリティ アクセスを管理できます。詳細については、「System Manager パラメータのアクセス制御」を参照してください。

 

CloudWatch イベント ルールからの変更通知の取得

パラメータ ストアがCloudWatch イベントのソースになりました。パラメータが作成、更新、削除される度にLambda 関数やSNSトピックのようなCloudWatchイベント ターゲットをトリガーするようにCludWatchルールをセットアップすることができます。

次の例は、CloudWatchルールを設定して、パラメータ更新のSNSトピックをトリガする方法を示しています。詳細については、「ステップ2:SNSトピックの作成」を参照してください。パラメータの更新に関する電子メール通知をトリガーするようにSNSトピックを設定したら、ターゲットのSNSトピックに関連付けるCloudWatchルールを作成します。 イベントパターンの値を編集して、通知を発生する特定のパラメータを指定することができます。

{
  "source": [
    "aws.ssm"
  ],
  "detail-type": [
    "Parameter Store Change"
  ],
  "detail": {
    "name": [
      "/DeploymentConfig/Prod/FleetHealth",
      "/DeploymentConfig/Beta/FleetHealth"
    ],
    "operation": [
"Update",
"Delete"
    ]
  }
}

 

/DeploymentConfig/Beta/FleetHealthパラメータの値を変更すると、CloudWatchイベントがメトリックに表示されます。

その間に作成したSNSトピックがトリガーされ、emailも受信できます。

 

結論

この記事では、パラメータを管理するためのいくつかの新しいパラメータ ストアの機能:階層化、タグ付け、CloudWatch 通知について示しました。階層化パラメータを使用するとプレインテキストと秘密情報の両方について設定データの構造化とアクセス管理が容易になります。タグ付けサポートはパラメータのグループ化とクエリを容易にする別の方法を提供します。CloudWatchイベントによって、パラメータの更新の通知をタイムリーに受け取ることができます。

 

筆者について

Lusha ZhangはAmazon EC2 System Managerチームのソフトウェア開発エンジニアです。彼女はAmazon Textbook RentalsからAWS Parameter Storeまで、Amazonでさまざまな製品に取り組んできました。仕事以外では、太平洋北西部でのサーフィンだけでなく、バイオリンやピアノの演奏も楽しんでいます。

 

(翻訳はSA福井が担当しました。原文はこちらです。)

 

ランサムウェア「WannaCry」に関するAWSへの影響について

 

2017年5月12日頃からWannaCry(別名、WCry、WanaCrypt0r 2.0、Wanna Decryptorなど)と呼ばれるランサムウェア(身代金マルウェア)による被害が世界中から報告されはじめました。日本でも複数の大手企業がこのマルウェアに感染したというニュースが報道されています。

このマルウェアは、ファイル共有および印刷共有サービスを提供するWindows SMBサーバー上に存在する脆弱性を悪用します。デフォルトでは、SMBサーバーはUDPポート137/138およびTCPポート139/445で動作します。また、Windowsオペレーティングシステムの複数のバージョンが対象で、Microsoft社は、この脆弱性を解消するため、2017年3月14日にMicrosoft Windows SMB Server(4013389)の重要なセキュリティ更新プログラムをリリースしました。詳細は、Microsoft MSRC blog もしくは Microsoft Security Bulletin MS1​​7-010 をご参照ください。

 

WannaCryによるAWSサービスへの影響

 

EC2 Windows

 

Amazon EC2上のWindowsに関しては、AWSから提供されている2017.04.12以降のリリースのAMIであれば、この脆弱性の被害を受けていません。また、自動更新が有効になっている場合も、この脆弱性は解消されています。2017.04.12より前のAMIを使用している、かつ、自動更新を有効にしていないお客様は、前述のセキュリティ更新プログラムをインストールすることをお勧めします。

AWSでは、セキュリティのベストプラクティスに従い、セキュリティグループの設定を確認し、その必要のあるインスタンスおよびリモートホストに対してのみ前述のポートへのアクセスを許可することを、常にお勧めしています。デフォルトでは、EC2セキュリティグループはこれらのポートをブロックします。

AWSのWindows AMIのリリースノートはこちらです。

 

WorkSpaces

 

Amazon WorkSpacesに関しては、2017 年4月15日以降にWorkSpaceを作成した、または、自動更新を有効にしたAmazon WorkSpacesのお客様は、この脆弱性の影響を受けません。 2017年4月15日より前にWorkSpaceを作成し、自動更新を有効にしていないお客様は、セキュリティ更新プログラムをインストールするか、 WorkSpaceを終了して再作成することをお勧めします。

 

Directory Service

 

AWS Directory Serviceに関しては、2017/05/20時点でパッチ適用作業が完了しました。お客様による対応は必要ありません。Amazon Simple AD、 AD Connector、AWS Cloud Directory はこの問題の影響を受けていません。最新情報につきましては、下の原文へのリンク先をご参照ください。

 

Elastic Beanstalk

 

AWS Elastic Beanstalkに関しては、2017 年5月4日以降のWindowsサーバーで構築された環境は、本問題の影響を受けません。ただし、既存のElastic Beanstalk Windows環境のアップデートは常に推奨しています。AWS管理コンソールから、もしくは、環境を再構築することでアップデート可能です。Elastic Beanstalkの現時点での最新のリリースノートはこちらです。

 

AWSによるセキュリティ速報(原文)は、こちらをご覧ください。

 

AWSサービスの効果的な使い方

 

Amazon Inspectorは、Amazon EC2インスタンスに対してエージェントを導入し、セキュリティ診断を行うサービスです。CVE(共通脆弱性識別子)のルールパッケージに基づいた診断も可能で、WannaCryに関連するCVE-2017-0143からCVE-2017-0148の脆弱性の検証ができます。AWS管理コンソール、CLI、APIから診断を実行できます。診断結果は、AWS管理コンソールで表示したり、エグゼクティブサマリー含むPDF形式のレポートとしても取得できます。

AWSコンソール上でのAmazon Inspector 結果一覧画面例

 

AWSコンソール上でのAmazon Inspector 結果詳細画面例

 

詳しくは、Amazon Inspector ユーザーガイドをご覧ください。

 

Amazon EC2 Systems Managerは、Amazon EC2インスタンスおよびオンプレミスサーバーに対してエージェントを導入し、ソフトウェアインベントリ収集やOSパッチ適用、OS構成変更などを一元的に管理できるサービスです。インスタンスに対して、シェルスクリプトやPowerShellコマンドの実行、パッチ適用の時間指定や定期実行などの管理タスクを簡単に自動化できます。今回のような、Windowsのセキュリティ更新プログラム適用にもご利用いただけます。詳しくは、Amazon EC2 Systems Manager ユーザーガイドをご覧ください。

 

推奨するAWSソリューション

 

今回のようなランサムウェアに対する最も有効な対策は、常日頃からバックアップを取得・管理し、セキュリティ推奨構成を保っておくことです。AWSではバックアップ&復旧に関する各種ソリューションの情報が提供されています。

上記の情報も参考に、これからも安心・安全なAWSライフをご満喫ください。

桐山 隼人, セキュリティソリューションアーキテクト
坪 和樹, クラウドサポートエンジニア
長谷川 淳, クラウドサポートエンジニア