« 週刊AWS - 2012年6月4日 | メイン | 週刊AWS - 2012年6月11日 »

【AWS発表】IAM roles for EC2 instances – シンプルに安全にEC2からAWSサービスのAPIにアクセス可能に

本日はEC2インスタンスから安全にAWSサービスのAPIにアクセスするのがより簡単になる新機能、AWS Identity and Access management (IAM) roles for EC2 instancesを紹介します。IAM roleを作成し、一連のパーミッションをIAM roleに設定し、そのIAM roleを適用したEC2インスタンスを起動できます。すると指定したパーミッションを持ったAWSアクセスキーがEC2インスタンス上で利用可能になります。

下記のショートビデオをご覧いただければ簡単に使いはじめることができることがわかると思います。

今までは、EC2インスタンスに安全にAWSアクセスキーを持って行かなければなりませんでした。これは、大量だったり、自由自在にスケールする構成にしたインスタンスを管理する際に課題になりうることでした。また、定期的にキーをローテーションするといったようなセキュリティ上のベストプラクティスを実装する方法を見つけだす必要がありました。IAM roles for EC2 instancesはこれらの両方の面倒を自動でみてくれます。

IAM roles for EC2 instancesは以下と一緒に利用可能です。

  • 全てのEC2インスタンスタイプ
  • Linux、Windowsインスタンス
  • 全てのAMI
  • Amazon VPC
  • スポットインスタンスとリザーブドインスタンス
  • 北米、南米、ヨーロッパ、アジア太平洋リージョン

Auto ScalingとAWS CloudFormationもrole機能に対応しましたので、これらを使って、IAM rolesを適用したEC2インスタンスを起動できます。また、GovCloudでも間もなくサポートを開始する予定です。

それではもう少し詳しく見ていきましょう。

すでにroleと呼ばれる新しいIAMエンティティを紹介しました。IAM rolesを使えば、EC2インスタンス内のアプリケーションがあなたの代わりにアクションを起こせるようになります。IAMユーザーのように、パーミッションを設定するにはAccess Policy Languageを使います。 しかしユーザーと異なり、roleはAWSサービスのAPIを直接呼ぶのに使うことはできません。 roleはエンティティによって"引きうけられ"なければなりません。今回はEC2インスンタンスですが、将来的にはIAMユーザーになるかもしれません。 以前、IAMユーザーについて説明するために投稿したブログ記事で紹介した"AWSホテル"を例にするとこうなります。 サリーという名前の家政婦はゲストルームを清掃するための日々の責任のためのIAMユーザーを提供されています。しかし、毎年1回の火災訓練の間、彼女はセイフティーオフィサーの役割を引き受けることができます。つまり彼女に別の権限(例えば、ビルの全ての部屋にアクセスができて、消防当局と連携するためのトランシーバーが使用できるといったような)が与えられます。

IAM roleを適用したEC2インスタンスを起動した時、roleによって指定されたパーミッションを持ったtemporary AWS security credentialsが安全にインスタンスに供給され、EC2 Instance Metadata Serviceを介してアプリケーションに使用できるようになります。このMetadata Serviceは現在アクティブはcredentialsが期限切れになる前に新しいtemporary security credentialsが利用可能になるので、インスタンス上では常に有効なcredentialsが利用可能です。

さらにセキュリティを高めるために、temporary AWS security credentialsは1日に複数回自動でローテーションします。AWS SDKを使ってアプリケーションを開発していれば、これらの全てはアプリケーションから見て、完全に透過的なので、コードを少し変更するだけで使い始めることができます。

もし以前に下記のようなコードを書いていた場合、

AWSCredentials creds = new BasicAWSCredentials(
    "AKIAIOSFODNN7EXAMPLE",
    "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY");
CredentialProvider session = new STSSessionCredentialsProvider(creds);
AmazonDynamoDB dynamo = new AmazonDynamoDBClient(session);

IAM rolesをサポートする最新のAWS SDKを使えば、このコードを次のように簡略化できます。

  1. AmazonDynamoDB dynamo = new AmazonDynamoDBClient();

残りはAWS SDKが面倒を見てくれます! これからも私達は皆様がアプリケーションの開発だけに集中できるよう可能な限り"無駄"を取り除く努力をし続けます。この新機能につきまして詳しい情報につきましては、the Using IAM guideのWorking with Rolesセクションとthe Amazon EC2 User GuideのUsing IAM roles with Amazon EC2 Instancesセクションをご確認ください。

堀内康弘 (Facebook, Twitter)

 

コメント

トラックバック

この記事のトラックバックURL:
http://www.typepad.com/services/trackback/6a00d8341c534853ef017742959663970d

【AWS発表】IAM roles for EC2 instances – シンプルに安全にEC2からAWSサービスのAPIにアクセス可能にを参照しているブログ:

Featured Event

2016年3 月

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31