技術ブログ - 毎日が成長!

2011年5月 のアーカイブ

ELBがひっそりとIPv6対応となりました

2011年5月26日 by yanase

みなさんこんにちは!インフラエンジニアの柳瀬です!

TwitterやFacebookを見ていると、RDSのOracle対応はとても反響があったようですね。
つい昨日もRoute53が正式版となり、ELBではZone Apexのサポートとセキュリティグループ機能が追加されました。
そんな中、ELBはひっそりと(?)IPv6にも対応しているようです。(現在はUS-EastとEU-Westリージョンのみ)
AWS Management Consoleからも以下のように簡単に確認が出来ました。

Management ConsoleのEC2タブからいつも通りELBを作成するだけです。

作成されたELBの詳細を見ると以下のようにIPv6用のDNS名とdualstack用のDNS名が割り当てられます。

ちなみにIPv6未対応のリージョンでは以下のように表示されますね。

IPv6用のDNS名を名前解決すると無事にIPv6アドレスが割り当てられています。

dualstack用のDNS名はIPv4とIPv6両方のアドレスが割り当てられているのが分かります。

実は先日行われたクラウドEXPOで来場された方からAWSのIPv6サポートについて聞かれておりました。
私からは『今は対応されていないようですが、対応されないって事はないと思いますよ』というお話をさせて頂きましたが、あの時のお客様もIPv6対応のニュースを聞いて喜ばれていらっしゃるのではないでしょうか?

今度はElasticIPなんかでもIPv6対応されるのでしょうか。今後も目が離せませんね!

 

IAMと私 ~IAMのAWS Management Consoleサポートバンザイ~

2011年5月23日 by suzuki
  • 普段お酒ばかり飲んでいて、あまり(技術っぽい)仕事をしていません。
  • 理系出身なのですが、どちらかというと財務とか人事などの仕事を好みます。
  • ITのことが嫌いなのではありませんが、一つのことを突き詰める気持ちはあまり強くありません。
  • そして、今回初めてブログらしいブログを書きます。
  • しかもそれが技術ブログということで些か緊張気味です。

と、IAMに掛けて、いきなり自己紹介から入ってしまいました、サーバーワークスの鈴木です。 今回は以前から興味を持っていたAWS Identity and Access Managementが今月から正式版となり、AWS Management Console対応も始まったので、早速少し試してみたところ、社長の大石(蔵人之助)からブログにした方がいい!と煽てられ、調子に乗って書いてみました。

IAM(Identity and Access Management)とは?

2010年9月にベータ版がリリースされたAWSアカウント内での権限管理のしくみのことです。IAMを使うことで、1つのAWSアカウントの下にユーザーやグループを作成でき、EC2やS3などのサービス毎に操作を許可、禁止することができるので、部署や委託先の担当者毎の業務範囲に応じた制御という企業利用にとって非常に重要な機能といえます(制御概略)。 IAMは素晴らしい機能であり、当社のCloudworksでも優先度を上げて早期に組み込んでいたのですが、制御ポリシーをJSON形式で書かねばならず、ベータ版ではコマンドラインが中心だったため、ここ3年ほどコーディングから足を洗っていた私は全く手が出せずにいました。また、AWS Management Consoleへのログイン制御ができなかったため、課金情報などをそのまま閲覧できてしまう点が管理業務の実務からみるとネックでもありました。

AWS Management ConsoleにIAMタブ登場!

今回、IAMからベータがとれ、正式版になると同時に(リリースブログ)、AWS Management Console(以下AWSコンソール)からも操作できるようになり(リリースブログ)、一気に私(ふつうの人)でも触れるようになりました。 AWSコンソールにログイン後、一番右のタブ「IAM」が増えていることが確認できます。 AWSコンソールで操作できることを中心にいくつか試してみたいと思います。

AWSコンソールからポリシー作りが楽

まずは上記の「IAM」タブDashboardの「Create a New Group of Users」ボタンから進んでみましょう。権限設定を行いたいグループ名を入れた後、権限ポリシーを設定するのですが、既に20種類ものポリシーテンプレートが下図のように用意されていますので、一般的なものを設定する場合はこれで十分です。 ここでは「Power User Access」(IAM権限設定以外の全ての操作が可能)を選びました。その後、ユーザー名(サンプルユーザー:ooishi)を登録すれば、簡単に権限ポリシーに基づいたユーザーが作られます。

ユーザーパスワードと専用コンソール画面

ここからが今回の真骨頂。AWSコンソールを今までとは違う形で使えるようになります。 「Sign-In Credentials」のところにある「Manage Password」ボタンから進むことにより、このAWSアカウント専用コンソール(後述)からログインすることができます。 なお、今回はIAMのAWSコンソールサポートのことを中心に書いているので詳細は割愛しますが、作られたユーザー毎に「Access Key」「Secret Access Key」「X.509 certificates」等、APIなどでのアクセスに必要な項目を個別に設定することもできます。

専用コンソール?(IAM User sign-in page)

IAMがAWSコンソール対応になった=IAMで設定したユーザーがそれぞれログインできる入り口が必要、ということで、今回あらたにAWSアカウント毎に専用コンソールが用意されています。 「IAM」タブDashboardの「AWS Account Alias」でそのIAM User sign-in URLが確認できるのですが、初期設定は機械的に割り当てられた数字のURL。これでは素っ気ないので「Create Account Alias」ボタンから登録することにより任意のFQDNが設定可能です(当たり前ですがAWS全アカウントの中でユニークでなければダメ)。

IAMユーザーでのログイン

IAMが無事効いているかどうか、さきほど作った「Power User Access」権限のユーザー ooishiさんで専用コンソールからログインして確かめてみます。 EC2やS3など普通に操作できましたが、下図のとおりIAMだけはnot authorizedで先に進むことができません。ということで、意図通りの制限が効いていることが確かめられました。

なお、IAMユーザーはどのような権限であってもAWSアカウント画面(請求情報やセキュリティ証明書が表示される画面)にはアクセスすることができません。AWS側が用意したテンプレートのフルアクセス権限「Administrator Access」ユーザーであってもダメでした。

EC2だけ操作できるユーザーを試す

AWS上でのシステム初期構築はSIerが請け負うが、通常の運用業務ではお客様が直接サーバー(EC2)を操作・確認する、といった場合(実はそのような場合には当社のCloudworksがとても有効なのですが)、を想像してみます。 EC2周りの機能に限定したユーザーを作ることでこれにも対応できると思うので、AWS側が用意したテンプレートの「Amazon EC2 Full Access」ユーザー(サンプルユーザー:hashiba)を試してみます(一応技術ブログらしくするために、ポリシーのJSONコードも載せます)。

Policy “AmazonEC2FullAccess”

{
  "Statement": [
    {
      "Action": "ec2:*",
      "Effect": "Allow",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "elasticloadbalancing:*",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "cloudwatch:*",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "autoscaling:*",
      "Resource": "*"
    }
  ]
}

さきほど同様にパスワードをユーザーhashibaさんにも設定し、専用コンソールからログイン。 すると意図通り、AWSコンソール「S3」タブではダッシュボードの表示がされず、「EC2」タブではAMIが閲覧、操作可能になりました。 ところが、、、

問題発生!

AWSコンソールの「EC2」ダッシュボードには困ったことに、「Reserved Instances」「Spot Requests」といった項目が表示されています。やっかいなのは、ここからいきなりReserved InstanceやSport Instanceを購入できたり、今までに購入していたInstance情報が見えてしまったりするのです。 単にお客様に見せたくない情報を見られてしまうだけでなく、不要なInstanceを簡単に購入できてしまうため、通常の単純な運用をユーザーhashibaさんに任せるにはビジネス上のリスクが残ってしまいます。 ちなみに、高額なReserved Instance 「東京リージョン、Windows with SQL Server、High-Memory Quadruple Extra Large、3年」だと、1台のお値段なんと $16,800。かるーく100万円超えますし(普通のカードだと一発で限度額!?)、毎月20台までは購入できてしまうはずなので、おそろしい金額に。。。(小心者の私は実際に購入したわけではないので金額上限があるのではないかとも思いますが)。

そこでポリシー追加

このままでは管理者として怖くて夜も眠れないので、Reserved InstanceやSpot Requestを制限すべく、ポリシーを追加します。

Policy “NoReservedInstances”

{
  "Statement": [
    {
      "Action": [
        "ec2:DescribeReservedInstances",
        "ec2:DescribeReservedInstancesOfferings",
        "ec2:PurchaseReservedInstancesOffering"
      ],
      "Effect": "Deny",
      "Resource": "*"
    }
  ]
}

Policy “NoSpotInstances”

{
  "Statement": [
    {
      "Action": [
        "ec2:CancelSpotInstanceRequests",
        "ec2:DescribeSpotInstanceRequests",
        "ec2:RequestSpotInstances"
      ],
      "Effect": "Deny",
      "Resource": "*"
    }
  ]
}

上記のポリシー「NoReservedInstances」「NoSpotInstances」を追加設定することにより、ユーザーhashibaさんは「Reserved Instances」や「Spot Requests」リンクを押下しても権限無しとして情報が表示されず、Reserved Instance購入やSpot Instance申込等の操作禁止という期待通りの制御をかけることに成功しました。

AWS Policy Generator

上記の2つのポリシーはコーディングの3年間のブランクを乗り越えて、私が必死に調べて作ったわけではなく、便利なAWS Policy Generatorを使って作ったものです。該当するActionがどれなのか探すのが少し大変ですが、選択するだけなので比較的簡単にポリシー作成ができると思います。

おわりに

今回の「IAM正式版&AWSコンソール対応」で、管理業務も含めたビジネス実務にほぼ利用できる権限設定機能となりました。 が、上述の通り、AWSアカウント画面(請求情報やセキュリティ証明書が表示される画面)が非表示となったため、ユーザー毎の使用実績や費用を知るすべがありません(もちろんAWSアカウント合計では分かります)。この辺りはAWS FAQにも計画中と書かれてありますので、機能追加を待ちたいと思います。 また、上記のように設定したIAM情報は当社のCloudworksでも設定、確認することができますが(過去ブログ)、更に企業向けに拡張し、権限設定も簡単に行える「Cloudworks Business Edition」をもう少ししたらみなさまにご案内できるものと思います。乞うご期待!

その他のIAM参考情報

 

RDSの簡単な監視をしてみよう!

2011年5月19日 by yanase

お久しぶりです。インフラ担当の柳瀬です。

みなさんAWSは好きですか?RDSは使っていますか?
私もRDSは構築の手間が省けて、大変お世話になっております。
スケールアップやディスク拡張も簡単に出来ますし、Multi-AZで対障害性も強化出来て素晴らしいですね!

『こうなったら監視なんて必要なさそうだぞ!!』って思えてしまいそうですが、そうはいきませんね。

RDSが素晴らしいサービスとはいえ、例えばディスク使用量が100%になってしまったらサービスダウンとなります。
Multi-AZを有効にしていても、めでたく共倒れとなります。
しかも、RDSはOSにログインする事が出来ずに、手慣れた監視クライアントをインストール出来ないのが悩みどころ。
今回のエントリでは、そんなRDSの監視をお手軽に、今すぐに出来る方法を一つご紹介したいと思います。

今回試用するツールは以下の2つとなり、それ以外に特別なものは必要ありません。

  • Amazon CloudWatch
  • Amazon Simple Notification Service(SNS)

また今回ご紹介する概要手順は以下の通りです。

  1. 稼働中のRDSに対してCloudwatchのAlermを設定
  2. 作成したAlermの状態になった場合のアクションとしてSNSメール通知を作成
  3. 動作確認

作業はManagement Consoleのみで完結します。

1)ManagementConsoleのCloudwatchタブからMetrics>RDSを選択します

2)監視対象RDSのFreeStorageSpaceを選択してCreate Alarmから作成をします

3)図のようにName、Description、不等式、閾値、時間を入力して次に進みます
※例ではディスクスペースが50GB以下の状態が5分継続した場合に警告が通知されます

4)Topicとして”Create New topic”を選択して図のように選択したら次に進みます
※ここで登録したメールアドレスにAmazon SNSを使用して警告通知されます

5)設定状況を確認して完了です。

6)設定完了後、指定したメールアドレスに以下のようなメールが届きます
※Confirm subscriptionというリンクを押下します

【AWS Notification - Subscription Confirtmation】

You have chosen to subscribe to the topic:
arn:aws:sns:ap-southeast-1:*************:alarm01

To confirm this subscription, click or visit the link below (If this was in error no action is necesary):
Confirm subscription

Please do not reply directly to this e-mail. If you wish to remove yourself from recieving all future SNS subscription confirmation requests please send email to sns-opt-out

7)動作確認用のデータを投入したら以下のようなメールが届きました

【[ALARM] Alarm "alarm01" in APAC - Singapore is now in state ALARM】

You are receiving this email because your Amazon CloudWatch Alarm "alarm01" in the APAC - Singapore region has entered the ALARM state, because "Threshold Crossed: 1 datapoint (49.703773696E9) was less than or equal to the threshold (50.0E9)." at "Tuesday 17 May, 2011 09:07:07 UTC"

View this alarm in the AWS Management Console:

https://console.aws.amazon.com/cloudwatch/home?region=ap-southeast-1#s=Alarms&alarm=alarm01

Alarm Details:
- Name:                       alarm01
- Description:
- State Change:               INSUFFICIENT_DATA -> ALARM
- Reason for State Change:    Threshold Crossed: 1 datapoint (49.703773696E9) was less than or equal to the threshold (50.0E9).
- Timestamp:                  Tuesday 17 May, 2011 09:07:07 UTC

Threshold:
- The alarm is in the ALARM state when the metric is LessThanOrEqualToThreshold 3.0E9 for 300 seconds.

Monitored Metric:
- MetricNamespace:            AWS/RDS
- MetricName:                 FreeStorageSpace
- Dimensions:
- Period:                     300 seconds
- Statistic:                  Average
- Unit:                       not specified

State Change Actions:
- OK:
- ALARM: [arn:aws:sns:ap-southeast-1:**********:alarm01]
- INSUFFICIENT_DATA:

--
If you wish to stop receiving notifications from this topic, please click or visit the link below to unsubscribe:


Please do not reply directly to this e-mail. If you have any questions or comments regarding this email, please contact us at sns-question@amazon.com

閾値を自由に設定できるので、クリティカルな状況になる前にメールで通知する事が可能です。
同様の手順でRDSの他の情報も監視する事が出来ます。

もっと本格的な方法もあるかと思いますが、この方法なら今スグにでも実施する事が出来ますね。
RDSの監視をしていない方、監視システムの構築に時間がかかりそうな場合は試してみてはいかがでしょうか?

 

PAGE TOP