Amazonは、2011年にCloudFrontに対するAWS Identity&Access Management(IAM)サポートの可用性を発表しました。 IAMは2010年に開始され、S3サポートを含む。 AWS Identity&Access Management(IAM)を使用すると、AWSアカウント内で複数のユーザーを持つことができます。 Amazon Web Services(AWS)を使用している場合は、AWSのコンテンツを管理する唯一の方法は、ユーザー名とパスワードまたはアクセスキーを提供することだけです。これは私たちのほとんどにとって本当のセキュリティ上の懸念です。 IAMはパスワードとアクセスキーを共有する必要性を排除します。
AWSのメインパスワードを絶えず変更したり、新しいキーを生成したりするのは、スタッフが私たちのチームを離れるときのちょっとした解決策です。 AWS Identity&Access Management(IAM)は、個々のキーを持つ個々のユーザーアカウントを許可するのに適していました。しかし、私たちはS3 / CloudFrontユーザーですので、最終的に起こったIAMにCloudFrontが追加されるのを見てきました。
私はこのサービスに関する文書がちょっとばらばらになっているのを発見しました。アイデンティティ&アクセス管理(IAM)のサポートの範囲を提供するサードパーティの製品がいくつかあります。しかし、開発者は通常は倹約しているので、Amazon S3サービスでIAMを管理するための無料のソリューションを探しました。
この記事では、IAMをサポートするコマンドラインインターフェイスを設定し、S3アクセスでグループ/ユーザーを設定するプロセスについて説明します。 Identity&Access Management(IAM)の設定を開始する前に、Amazon AWS S3アカウントのセットアップが必要です。私の記事、Amazon Simple Storage Service(S3)を使用して、AWS S3アカウントを設定するプロセスを説明します。
ここでは、IAMでのユーザの設定と実装に必要な手順を示します。これはWindows用に書かれていますが、Linux、UNIX、Mac OSXでの使用を調整できます。
- コマンドラインインターフェイス(CLI)のインストールと設定
- グループを作成する
- S3 BucketとCloudFrontにグループアクセス権を与える
- ユーザーの作成とグループへの追加
- ログインプロファイルの作成とキーの作成
- テストアクセス
コマンドラインインターフェイス(CLI)のインストールと設定
IAMコマンドラインツールキットは、AmazonのAWS Developers Toolsで利用可能なJavaプログラムです。このツールを使用すると、シェルユーティリティ(Windowsの場合はDOS)からIAM APIコマンドを実行できます。
- Java 1.6以上を実行している必要があります。 Java.comから最新バージョンをダウンロードできます。 Windowsシステムにどのバージョンがインストールされているかを確認するには、コマンドプロンプトを開き、java -versionと入力します。これは、java.exeがあなたのPATHにあると仮定します。
- IAM CLIツールキットをダウンロードし、ローカルドライブのどこかに解凍します。
- CLIツールキットのルートには、更新が必要な2つのファイルがあります。
- aws-credential.template: このファイルには、AWSの認証情報が格納されます。 AWSAccessKeyIdとAWSSecretKeyを追加し、ファイルを保存して閉じます。
- client-config.template:プロキシサーバーが必要な場合にのみ、このファイルを更新する必要があります。 #記号を削除し、ClientProxyHost、ClientProxyPort、ClientProxyUsernameおよびClientProxyPasswordを更新します。ファイルを保存して閉じます。
- 次のステップでは、環境変数を追加します。コントロールパネルに移動します。システムプロパティ|高度なシステム設定|環境変数。次の変数を追加します。
- AWS_IAM_HOME:この変数を、CLIツールキットを解凍したディレクトリに設定します。 Windowsを実行していて、Cドライブのルートで解凍した場合、変数はC: IAMCli-1.2.0になります。
- JAVA_HOME:この変数は、Javaがインストールされているディレクトリに設定します。これはjava.exeファイルの場所になります。通常のWindows 7 Javaインストールでは、これはC: Program Files(x86) Java jre6のようなものです。
- AWS_CREDENTIAL_FILE:この変数を、上記で更新したaws-credential.templateのパスとファイル名に設定します。 Windowsを実行し、Cドライブのルートで解凍した場合、変数はC: IAMCli-1.2.0 aws-credential.templateになります。
- CLIENT_CONFIG_FILE:プロキシサーバーが必要な場合にのみ、この環境変数を追加する必要があります。 Windowsを実行し、Cドライブのルートで解凍した場合、変数はC: IAMCli-1.2.0 client-config.templateになります。必要がない限り、この変数を追加しないでください。
- コマンドプロンプトでiam-userlistbypathと入力して、インストールをテストします。あなたが間違いを受けていない限り、あなたは行かなくてはなりません。
すべてのIAMコマンドは、コマンドプロンプトから実行できます。すべてのコマンドは "iam-"で始まります。
グループを作成する
AWSアカウントごとに作成できるグループは最大100個です。ユーザレベルでIAMの権限を設定することはできますが、グループを使用することがベストプラクティスです。ここでは、IAMでグループを作成するプロセスを示します。
- グループを作成する構文は、iam-groupcreate -gです。GROUPNAME -p PATH -vここで、-pおよび-vはオプションです。 AWS Docsでは、コマンドラインインターフェイスに関する完全なドキュメントを入手できます。
- "awesomeusers"というグループを作成する場合は、コマンドプロンプトでiam-groupcreate -g awesomeusersと入力します。
- グループが正しく作成されたことを確認するには、コマンドプロンプトでiam-grouplistbypathと入力します。このグループを作成しただけの場合、出力は「arn:aws:iam :: 123456789012:group / awesomeusers」のようになります。ここで番号はAWSアカウント番号です。
S3 BucketとCloudFrontにグループアクセス権を与える
ポリシーは、あなたのグループがS3またはCloudFrontでできることを制御します。デフォルトでは、あなたのグループはAWSの何にもアクセスできません。私はポリシーに関する文書がOKであることを発見しましたが、ほんの一握りのポリシーを作成するにあたって、私は彼らが働きたいと思ったやり方で仕事をするために少しの試行錯誤を行いました。
ポリシーを作成するためのオプションがいくつかあります。コマンドプロンプトに直接入力することもできます。ポリシーを作成して調整している可能性があるので、テキストファイルにポリシーを追加して、iam-groupuploadpolicyコマンドでパラメータとしてテキストファイルをアップロードするほうが簡単だったようです。ここでは、テキストファイルを使用してIAMにアップロードするプロセスがあります。
- メモ帳などを使用して、次のテキストを入力してファイルを保存します。
- {
- "ステートメント":{
- "効果": "許可"、
- "Action": "s3:*"、
- "リソース":
- "arn:aws:s3 ::: BUCKETNAME"、
- "arn:aws:s3 :::バケツネーム/ *"
- },
- {
- "効果": "許可"、
- "Action": "s3:ListAllMyBuckets"、
- "リソース": "arn:aws:s3 ::: *"
- },
- {
- "効果": "許可"、
- "Action":"cloudfront:*"、
- "リソース":"*"
- }
- }
- このポリシーには3つのセクションがあります。このエフェクトは、ある種類のアクセスを許可または拒否するために使用されます。アクションは、グループが行うことができる特定のものです。リソースは、個々のバケットにアクセスするために使用されます。
- アクションを個別に制限することができます。この例では、 "Action":"s3:GetObject"、 "s3:ListBucket"、 "s3:GetObjectVersion"を使用すると、グループはバケットの内容をリストしてオブジェクトをダウンロードできます。
- 最初のセクションでは、バケット「バケツネーム」のすべてのS3アクションをグループに許可します。
- 2番目のセクションでは、グループ内のすべてのバケットを「許可」します。 AWS Consoleのようなものを使用する場合、バケットのリストを実際に見ることができるように、これが必要です。
- 3番目のセクションでは、グループにCloudFrontへのフルアクセス権を付与します。
IAMポリシーには多くのオプションがあります。 Amazonは、AWS Policy Generatorという本当にクールなツールを提供しています。このツールは、ポリシーを作成し、ポリシーを実装するために必要な実際のコードを生成するGUIを提供します。また、「AWS IDとアクセス管理の使用」オンラインドキュメントの「アクセスポリシー言語」のセクションを参照することもできます。
ユーザーの作成とグループへの追加
新しいユーザーを作成してグループに追加してアクセスを提供するプロセスには、いくつかのステップがあります。
- ユーザーを作成する構文は、iam-usercreate -u USERNAME -p PATH -g GROUPS … -k -vです。-p、-g、-k、-vはオプションです。 AWS Docsでは、コマンドラインインターフェイスに関する完全なドキュメントを入手できます。
- ユーザー "bob"を作成する場合は、コマンドプロンプトでiam-usercreate -u bob -g awesomeusersと入力します。
- コマンドプロンプトでiam-grouplistusers -g awesomeusersと入力して、ユーザが正しく作成されたことを確認できます。このユーザーのみを作成した場合、出力は「arn:aws:iam :: 123456789012:user / bob」のようになります。ここで、番号はAWSアカウント番号です。
ログオンプロファイルの作成とキーの作成
この時点で、ユーザーを作成しましたが、実際にS3からオブジェクトを追加または削除する方法をユーザーに提供する必要があります。 IAMを使用してユーザーにS3へのアクセスを提供する2つのオプションがあります。ログインプロファイルを作成し、ユーザーにパスワードを提供することができます。彼らは、自分の資格情報を使ってAmazon AWS Consoleにログインできます。もう1つの選択肢は、ユーザにアクセスキーと秘密鍵を与えることです。彼らは、S3 Fox、CloudBerry S3 Explorer、S3 Browserのようなサードパーティのツールでこれらのキーを使うことができます。
ログインプロファイルを作成する
S3ユーザーのログインプロファイルを作成すると、Amazon AWS Consoleにログインするために使用できるユーザー名とパスワードが提供されます。
- ログインプロファイルを作成する構文は、iam-useraddloginprofile -u USERNAME -p PASSWORDです。 AWS Docsでは、コマンドラインインターフェイスに関する完全なドキュメントを入手できます。
- ユーザー "bob"のログインプロファイルを作成する場合は、コマンドプロンプトでiam-useraddloginprofile -u bob -p PASSWORDと入力します。
- コマンドプロンプトでiam-usergetloginprofile -u bobと入力すると、ログインプロファイルが正しく作成されたことを確認できます。 bobのログインプロファイルを作成した場合、出力は「ユーザーbobのログインプロファイルが存在する」のようなものになります。
キーの作成
AWSシークレットアクセスキーと対応するAWSアクセスキーIDを作成することで、前述のようなサードパーティのソフトウェアを使用することができます。セキュリティ対策として、ユーザープロファイルを追加するプロセス中にのみこれらのキーを取得できることに注意してください。コマンドプロンプトから出力をコピー&ペーストして、テキストファイルに保存してください。ファイルをユーザーに送信することができます。
- ユーザーにキーを追加する構文は、iam-useraddkey -u USERNAMEです。 AWS Docsでは、コマンドラインインターフェイスに関する完全なドキュメントを入手できます。
- ユーザー "bob"のキーを作成する場合は、コマンドプロンプトでiam-useraddkey -u bobと入力します。
- コマンドは以下のようなキーを出力します:
- AKIACOOB5BQVEXAMPLE
- BvQW1IpqVzRdbwPUirD3pK6L8ngoX4PTEXAMPLE
- 最初の行はアクセスキーIDで、2行目はシークレットアクセスキーです。サードパーティのソフトウェアには両方とも必要です。
テストアクセス
これで、IAMグループ/ユーザーが作成され、ポリシーを使用してグループにアクセスできるようになったので、アクセスをテストする必要があります。
コンソールアクセス
ユーザーは、ユーザー名とパスワードを使用してAWS Consoleにログインできます。ただし、これはメインのAWSアカウントで使用される通常のコンソールログインページではありません。 Amazon AWSアカウントにのみログインフォームを提供する特別なURLがあります。ここに、あなたのIAMユーザーのためにS3にログインするためのURLがあります。
https://AWS-ACCOUNT-NUMBER.signin.aws.amazon.com/console/s3
AWS-ACCOUNT-NUMBERは、通常のAWSアカウント番号です。これは、Amazon Web Serviceのログインフォームにログインすることで取得できます。ログインしてアカウント|アカウントアクティビティあなたのアカウント番号は右上隅にあります。ダッシュをはずしてください。 URLはhttps://123456789012.signin.aws.amazon.com/console/s3のようになります。
アクセスキーの使用
この記事で既に述べたサードパーティのツールをダウンロードしてインストールすることができます。サードパーティツールのドキュメントごとに、アクセスキーIDとシークレットアクセスキーを入力します。
最初のユーザーを作成し、そのユーザーがS3で行う必要があるすべてのことを実行できることを完全にテストするようにしておくことを強くお勧めします。ユーザーの1人を確認したら、すべてのS3ユーザーのセットアップを続行できます。