Amazon Web Services ブログ

Tag: AWS IAM

既存のAmazon EC2インスタンスにIAM Roleがアタッチできるようになりました

AWS Identity and Access Management(IAM) のロール を利用することで、Amazon EC2上で実行するアプリケーションは、AWSが自動的に作成、配布、およびローテーションする一時的なセキュリティ資格情報を利用することができます。一時的な資格情報を使用することは、IAMのベストプラクティスとなっており、インスタンスで長期間の鍵の管理する必要がなくなります。IAM Roles for EC2 (EC2のIAMロール)を使用することで、長期的なAWSアクセスキーを手動またはプログラムで管理する必要もなくなります。そして本日、既存のEC2インスタンスにIAMロールをアタッチすることが可能になり、アプリケーションはAWSによって提供される一時的なセキュリティ資格情報を使用できるようにするよう設定できるようになりました。 また、既存のEC2インスタンスに添付されているIAMロールを変更することも可能になります。 このブログ記事では、AWS CLIを使用して既存のEC2インスタンスにIAMロールをアタッチする方法をご紹介します。 ソリューションの概要 このブログ記事のソリューションでは、 1. IAMロールの作成 2. IAMロールなしで起動された既存のEC2インスタンスにIAMロールをアタッチ 3. アタッチされているIAMロールの付け替え この記事では、新しく作成されたIAMロールを”YourNewRole“とします。このロールに関連付けられたインスタンス・プロファイルを”YourNewRole-Instance-Profile“、 既存のインスタンスを”YourInstanceId“とすることにます。 これら(赤字)はアカウントのリソース名に置き換えてください。 ここでは、AWSコマンドラインインターフェイス(CLI)の設定が完了しており、IAMロールを作成する権限、EC2 APIを呼び出す権限を持っていることを前提としています。 IAMロールの作成 注:既存のIAMロールをアタッチする場合は、このポストの「IAMロールなしで最初に起動された既存のEC2インスタンスにIAMロールをアタッチ」に進んでください。 またAWSマネージメントコンソールを使用してIAMロールを作成してから、同じセクションに進むこともできます。 AWS CLIからIAMロールを作成する前に、信頼ポリシーを作成する必要があります。 信頼ポリシーは、EC2などのAWSサービスがアプリケーションに代わってIAMロールを引き受けることを許可します。 信頼ポリシーを作成するには、下記のポリシーをコピーし、YourNewRole-Trust-Policy.jsonという名前で保存したテキストファイルに貼り付けます。 { “Version”: “2012-10-17”, “Statement”: [ { “Effect”: “Allow”, “Principal”: { “Service”: “ec2.amazonaws.com” }, “Action”: “sts:AssumeRole” } ] } 信頼ポリシーを作成すると、既存のEC2インスタンスにアタッチできるIAMロールを作成する準備が整いました。 AWS CLIからIAMロールを作成 1. AWS […]

Read More

ECSタスクのためのIAMロールによってコンテナ利用アプリケーションをより安全にする

Amazon ECSでは、コンテナから簡単にAPIリクエストを行うために、Amazon EC2のIAMロールをいつでも使うことができます。これによって、AWSの認証情報をコードや設定ファイルに保存しないというAWSのベストプラクティスに従うことができる上に。鍵の自動ローテーションといった利点も得られます。 例えば、ECSとAmazon S3を使った秘匿情報管理システムを作ったり、Amazon DynamoDBを使って状態管理したり、S3を使ってコンテナによって生成された成果物を保存したり、ということがロールによって可能であり、全てにおいてAWSの認証情報をコードの中に全く持つ必要がありません。 今までは、Amazon EC2のIAMロールを使う必要がありました。つまり、ECSクラスタのEC2インスタンスに紐付いたIAMポリシーは同一クラスタ内で実行されるタスクが必要な全てのIAMポリシーを含んでいる必要がありました。これは、もし1つのコンテナが特定のS3バケットへのアクセスが必要で、他のコンテナがDynamoDBテーブルへのアクセスが必要であった時、同一のEC2インスタンスに両方のIAM権限を与える必要があることを意味しています。 新しく公開されたECSタスクのためのIAMロールの導入によって、EC2コンテナインスタンスではなくECSタスクに直接IAMロールを紐付けることで、基盤をより安全に保つことができます。この手法によって、1つのタスクはS3にアクセスする特定のIAMロールを使いながら他のタスクはDynamoDBテーブルへにアクセスするIAMロールを使うことができます。 この機能によって、ECSクラスタインスタンスのIAMポリシーも最小限にすることが可能です。なぜなら、ECSサービスとやり取りするために必要な2,3のIAM権限を与えるだけで良いからです。 この記事で、タスクIAMロールのセットアップを眺めてみましょう。 必要条件 もしまだであればECSクラスタを作成し、最低でも1つのEC2インスタンスをクラスタ内に起動します。EC2インスタンスを起動するとき、Container instance IAM roleとして、AmazonEC2ContainerServiceforEC2RoleポリシーがアタッチされたIAMロールを選択します。 もし既存のクラスタがあれば、ECS最適AMIの2016.03.eを使い、この機能を使うために2016年7月13日リリースかそれより新しいSDKを使います。 デモンストレーション このデモでは、Amazon S3バケットを作成し’Hello World’ファイルをアップロードするだけの簡単なNode.jsアプリケーションを使います。アプリケーションのソースコードはaws-nodejs-sampleのGitHubレポジトリにあります。 Dockerイメージをビルドしプッシュする ターミナルアプリケーションで、以下のコマンドを実行します: $ git clone https://github.com/awslabs/aws-nodejs-sample すると現在のディレクトリの下にaws-nodejs-sampleという名前のディレクトリが作られ、サンプルアプリのコードが配置されます。そのディレクトリでDockerfileというファイルを作成し、以下のテキストを貼り付け保存します。 FROM node:argon # Create app directory RUN mkdir -p /usr/src/app WORKDIR /usr/src/app # Install app dependencies COPY package.json /usr/src/app/ RUN npm install # Bundle app source COPY […]

Read More

【AWS発表】新機能:Service Last Accessed Dataからのより詳細な情報取得

昨年末にAWS Identity and Access Management (IAM) で、IAMエンティティ(ユーザー、グループ、ロール)がAWSサービスに最後にアクセスした時刻を表示する機能としてService Last Accessed Dataをリリースしました。この機能は、最小限の権限付与に大きく役立つツールです。 本日、Service Last Accessed Dataの情報が追加され、どの権限を削除できるかをより簡単に識別することができるようになりました。 今回のリリースで、IAMエンティティとポリシーについて次のような情報にアクセスできます: マネージドポリシーやグループに関連付けられている全てのIAMユーザーおよびロールのLast Accessed Data あるIAMユーザー、ロール、グループに対して、サービスの権限を与えている全てのポリシー これらの追加された詳細データによってアクセスパターンやポリシー構成がより理解しやすくなります。結果として、より良い情報を元に権限管理の決断をくだせます。 この記事では、新しいより詳細なService Last Accessed Dataをウォークスルーし、どのように権限管理をより効果的に行うかについて説明します。   マネージドポリシーあるいはグループに関連付けられた全てのIAMユーザーおよびロールの最終アクセス履歴を参照する   あなたが、ユーザーやアプリケーションのセキュリティを管理する責任をもつIAMの管理者だと想像して下さい。全ての権限が必要ないIAMユーザーやロールに対して、ポリシーが広すぎる形で適用されていないかどうかを知りたいと思うことでしょう。これまでは、マネージドポリシーのアクセスアドバイザータブでは、サービスがいつ最後にアクセスされたかが表示されていましたが、どのユーザーあるいはロールが最後にアクセスしたのかを特定するためには、AWS CloudTrailのログをサーチする必要がありました。今回の機能によって、次のスナップショットに示すように、エンティティによるアクセス列のリンクをクリックすることにより、どのユーザーあるいはロールがそのサービスに最後にアクセスしたかだけではなく、そのサービスに関連付けられた全てのユーザーやロールがいつ最後にアクセスしたのかをすぐに見ることが出来るようになりました。   例えば、次のスクリーンショットは、あるマネージドポリシーで付与されているAmazon EC2の権限についての情報を表示しています。見ての通り、ポリシーをアタッチされている全てのユーザーやロールが実際にEC2にアクセスしているわけではありません。つまり、このユーザーやロールのうちの幾つかは、剥奪可能な過大な権限を持っていることを示しています。   あるユーザー、ロール、グループに対してサービスの権限を付与している全てのポリシーを参照する   さきほどと同じように、あなたが最小権限の原則を適用しようとしているIAM管理者であることを想像してください。あるユーザーやロールに対するService Last Accessed Dataを参照した後に、ユーザーやロールから必要ないポリシーを削除したりデタッチしたりしたいと思うかもしれません。この手助けとして、ユーザーのアクセスアドバイザータブで、どこで権限が付与されているかをクイックに見るために、ポリシーのアクセス権限内のサービス権限のリンクをクリックして下さい。そうすれば、AWS管理ポリシーやIAMグループから継承されたポリシーが表示されます。ダイアログボックスの中でポリシーの名前をクリックすることでそのポリシーを参照でき、簡単に変更を行うことが出来ます。   次のスクリーンショットは、あるIAMユーザーに付与されているEC2に対する権限のソースを示しています。見ての通り、複数のマネージドおよびインラインポリシーが定義されていて、幾つかのポリシーをクリーンナップあるいは統合する事が適切であるということを示唆しています。   Service Last Accessed Dataをより詳細に参照できる機能によって、権限管理がより容易になります。より詳細化されたService Last Accessed Dataについてコメントがある方は、下記のコメント欄にお願いします。ご質問のある方は、IAMフォーラムへの投稿をお願い致します。 – Zaher (翻訳はSA布目が担当しました。原文はこちら)

Read More