IAMロールとMFA
共有の~/.aws/configファイルでロール用のプロファイルを定義することで、Amplify CLIがIAMロールを引き受けるようにオプションで設定できます。これは短期認証情報を含むAWS CLIの機能方法と同じです。複数の開発者が1つ以上のAWSアカウントを使用する場合や、チームワークフローで開発者が行うことができるカテゴリアップデートを制限したい場合に便利です。AWSの設定ファイルと認証情報ファイルはAmplify CLI、AWS CLI、その他のAWS SDKで共有されます。ただし、Amplify CLIは.などの特殊文字を正しくエスケープ(\.)しない限り解析しません。設定ファイルと認証情報ファイルの形式についての詳しい情報はこちらをご覧ください。
amplify initまたはamplify configure projectコマンドの実行中にプロンプトが表示されたら、ロール用に設定されたプロファイルを選択します。すると、Amplify CLIが一時認証情報の取得、キャッシュ、更新のロジックを処理します。多要素認証(MFA)が有効になっている場合、一時認証情報を取得または更新する必要があるときにCLIはMFAトークンコードの入力を促します。
Amplify CLIには独自の一時認証情報キャッシング機構があり、AWS CLIと同じキャッシュを使用しません。一時認証情報は~/.amplify/awscloudformation/cache.jsonにキャッシュされます。キャッシュされたすべての認証情報を削除するには、このファイルを削除します。
特定のプロジェクトに関連付けられたキャッシュ一時認証情報のみを削除したい場合は、プロジェクトでamplify awscloudformation reset-cacheまたはそのエイリアスのamplify aws reset-cacheを実行してください。
IAMロールを作成して引き受けるステップバイステップガイド
以下は、IAMロールを作成してAmplify CLIで使用可能にする方法のステップバイステップガイドです。
セットアップは3つの部分に分かれており、この機能を実演するための例を使用します。
Biz Corpが開発会社のDev Corpにインベントリ管理ウェブポータルの開発を依頼することにしたと仮定します。Dev CorpはAmplify CLIを使用して開発プロセスを加速させています。
1. ロールをセットアップする(Biz Corp)
- AWSマネジメントコンソールにサインインして、IAMコンソールを開きます。
- コンソールのナビゲーションペインで
Rolesを選択してからCreate roleを選択します。 Another AWS accountロールタイプを選択します。- アカウントIDについて、Dev CorpのAWSアカウントID(AWSリソースへのアクセスを許可する対象のエンティティのアカウントID)を入力します。
- オプションですが、
Require external IDを選択してDev Corpから提供されたexternal idを入力することをお勧めします。(external IDの詳細はこちらをクリック)。 - ロールを多要素認証(MFA)でサインインするユーザーに制限したい場合は、
Require MFAを選択します(MFAの詳細はこちらをクリック)。 Next: Permissionsを選択します。- ロールを引き受けるときにDev Corpの開発者が持つようにしたいアクセス許可ポリシーを選択します。 注:ロールにCloudFormationアクションを実行し、関連するリソース(プロジェクトで使用するカテゴリに応じて)を作成するアクセス許可を付与する必要があります。以下のようなものが含まれます:
- Cognito ユーザーとアイデンティティプール
- S3バケット
- DynamoDBテーブル
- AppSync API
- API Gateway API
- Pinpointエンドポイント
- Cloudfront ディストリビューション
- IAMロール
- Lambda関数
- Lex ボット
Next: Taggingを選択して、必要に応じてタグを適用します(オプション)。Next: Reviewを選択してロール名を入力し、オプションでロール説明を追加します。- 「Role name」などの必須フィールドを入力します。
Create roleを選択します。- ロールのARNをDev Corpに提供します。
2. ロールを引き受けるユーザーをセットアップする(Dev Corp)
2.1 Biz Corpが上記で作成したロールを引き受けるアクセス許可を持つポリシーを作成する
- Biz Corpからロール ARNを取得します。
- AWSマネジメントコンソールにサインインして、IAMコンソールを開きます。(Dev Corpが別のAWSアカウントを持っていると仮定)。
- コンソールのナビゲーションペインで
Policiesを選択してからCreate policyを選択します。 - 「JSON」タブを選択して、以下の内容をペインに貼り付けます。
<biz_corp_rol_arn>を前述の値に置き換えます。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "<biz_corp_rol_arn>" } ]}Review policyを選択します。- ポリシー名を入力し、オプションでポリシー説明を追加します。
Create policyを選択します。
2.2 ポリシーをユーザーに適用する
- AWSマネジメントコンソールにサインインして、IAMコンソールを開きます。
- コンソールのナビゲーションペインで
Usersを選択してからAdd userを選択します。 - 新しいユーザーの
User nameを入力します。 Access typeでプログラムによるアクセスを選択します。Next: Permissionsを選択します。- 「Set Permissions」ページで
Attach existing policies directlyを選択します。 - 2.1で作成したポリシーを選択します。
Next: Taggingを選択して、必要に応じてタグを適用します(オプション)。Next: Reviewを選択します。Create Userを選択します。Download .csvをクリックして、認証情報のコピーをダウンロードします。オプションで、アクセスキーIDとシークレットアクセスキーをコピーして安全な場所に保存できます。これらの認証情報は後のセクションで使用されます。
2.3 MFAデバイスを割り当てる(オプション)
Biz Corpがロール作成時にRequire MFAを選択した場合、これをセットアップする必要があります。これはDev Corpユーザーと彼らのそれぞれのAWSアカウントでセットアップする必要があります。
この例では、Google Authenticatorアプリなどの仮想MFAデバイスを使用しています。
- AWSマネジメントコンソールにサインインして、IAMコンソールを開きます。
- コンソールのナビゲーションペインで
Usersを選択して、2.2で上記で作成したユーザーを選択します。 Security Credentialsタブを選択します。Assigned MFA deviceラベルの横にあるManageオプションを選択します。- Manage MFA Deviceウィザードで
Virtual MFA deviceを選択してからContinueを選択します。 - MFAアプリがQRコードをサポートしている場合は
Show QR codeを選択して、仮想デバイス(この場合はGoogle Authenticatorアプリ)からQRコードをスキャンします。サポートしていない場合はShow secret keyを選択してMFAアプリに入力します。 - 「MFA code 1」ボックスで、仮想MFAデバイスに現在表示されているワンタイムパスワードを入力します。デバイスが新しいワンタイムパスワードを生成するまで待ちます。次に、2番目のワンタイムパスワードを「MFA code 2」ボックスに入力します。次に「Assign MFA」を選択します。
Assigned MFA deviceの隣にあるMFAデバイスarnをコピーします。このarnはパート3で使用されます。
3. ローカル開発環境をセットアップする(Dev Corp)
- ローカル開発システムで、以下の2つのファイルが存在しない場合は作成します。
~/.aws/config
~/.aws/credentials ~/.aws/configファイルに以下の内容を挿入します:
[profile bizcorprole]role_arn=<role_arn_from_part#1>source_profile=devcorpusermfa_serial=<mfa_serial_from_part_2.3---optional>external_id=<external_id_as_mentioned_in_part#1--optional>region=us-east-1
[profile devcorpuser]region=us-east-1mfa_serialとexternal_idはオプションです。設定されていない場合は削除してください。
~/.aws/credentialsファイルに以下の内容を挿入します:
[devcorpuser]aws_access_key_id=<key_id_from_part_2.2>aws_secret_access_key=<secret_access_key_from_part_2.2>これでDev CorpがAmplifyプロジェクトを初期化しようとするとき、ユーザーは上記で設定されたbizcorproleプロファイルを選択できます。セットアップされた認証方法に基づいて、ユーザーにはMFAコードなどの対応する質問が表示されます。その後、ユーザーはBiz Corpのアカウントで(Biz Corpが設定したアクセスポリシーに基づいて)AWSリソースを正常にデプロイ/管理できるようになります。