ビデオ: How do I implement IAM authentication for APIs in API Gateway? 2024
サードパーティのプロキシを扱う際の明白な疑問があります。これらのツールがあなたのために機能する場合、Amazon Web Services(AWS)は、代理人実際にあなたは あなたですか? つまり、AWSは自分の身元を認証して、受信したコマンドが確実にあなたのものであることを確認できますか?
実際には、AWS APIを直接操作しても同じ質問が有効です。 AWSはあなたのアイデンティティを検証して、あなただけのためにコマンドを実行するようにしますか?
<! --1 - >もちろん、1つの方法として、アカウントのユーザー名とパスワードをAPI呼び出しに含めることができます。一部のクラウドプロバイダーはこのアプローチを採用していますが、Amazonはそうしていません。
ユーザー名とパスワードに頼るのではなく、APIサービス呼び出しを認証するための2つの識別子、つまりアクセスキーと秘密のアクセスキーに依存しています。サービスコールでこれらのキーを使用して、ユーザー名とパスワードだけを使用するよりもはるかに安全な方法でセキュリティを実装します。
それでどうやって動くの? AWSでアカウントを登録すると、アクセスキーを作成し、秘密のアクセスキーを送信する機会があります。それぞれは長い文字列のランダムな文字列であり、秘密のアクセスキーは長い方の文字列です。秘密のアクセスキーをダウンロードするときは、セキュアなサービスコールを実装することが鍵です(ごめんなさい - 悪い言い訳)。
<! - 3 - >これを実行すると、あなたとAmazonの両方にアクセスキーと秘密のアクセスキーのコピーがあります。シークレットアクセスキーのコピーを保持することは、あなたとAWS間を行き来する情報を暗号化するために使用され、シークレットアクセスキーを持たない場合はAWS上でサービスコールを実行することができないため重要です。
2つのキーの使用方法は概念的には単純ですが、詳細にはいくらか難しいです。
基本的には、実行するサービスコールごとに、あなた(またはあなたの代わりに動作するツール)が以下を実行します。
-
サービスコールペイロードを作成します。
これはAWSに送信する必要があるデータです。これは、S3に保存したいオブジェクト、または起動するイメージのイメージ識別子です。 (ペイロードには他の情報も添付しますが、サービスコールの仕様によって異なるため、ここには記載されていません)。
-
ペイロードを暗号化する秘密のアクセスキーを使用します。
そうすることで、誰もペイロードを調べることができず、ペイロードを調べることができなくなります。
-
暗号化されたペイロードに秘密のアクセスキーを追加し、秘密のアクセスキーを使用してデジタル署名プロセスを実行することによって、暗号化されたペイロードにデジタル署名します。
秘密のアクセスキーは、一般的なユーザーパスワードよりも長くてランダムです。長い秘密のアクセスキーは、通常のユーザーパスワードで実行された場合よりも安全に暗号化を実行します。
-
暗号化されたペイロードとアクセスキーをサービスコール経由でAWSに送信します。
Amazonはアクセスキーを使用して秘密のアクセスキーを検索し、ペイロードを復号化するために使用します。復号化されたペイロードが実行可能な可読テキストを表す場合、AWSはサービスコールを実行します。それ以外の場合は、サービスコールに何らかの問題があると判断し(おそらく悪意のある俳優から呼び出された可能性があります)、サービスコールを実行しません。
サービスコールの正当性を保証するために使用される他の2つの方法が、AWSには今説明した暗号化に加えてあります。
-
最初は、サービスコールペイロードに含まれる日付情報に基づいています。サービスコールの作成に関連する時間が適切であるかどうか。サービスコールの日付が、現在の時刻よりはるかに早いか遅い、換言すれば、AWSは正当なサービスコールではないと判断し、それを破棄します。
-
第2の追加のセキュリティ対策には、ペイロードに対して計算したチェックサムが含まれます。 (A999チェックサムはメッセージの内容を表す数字です。)AWSはペイロードのチェックサムを計算します。そのチェックサムがあなたのものと一致しない場合、それはサービスコールを許可せず、それを実行しません。このチェックサム手法は、誰もメッセージの内容を改ざんすることを防ぎ、悪意のある俳優が正当なサービスコールを傍受して受け入れられない動作を実行するのを防ぐことを保証する。誰かがメッセージを改ざんすると、AWSがチェックサムを計算するときに、そのチェックサムはメッセージに含まれているものと一致しなくなり、AWSはサービスコールの実行を拒否します。 ほとんどのAWSユーザーと同様に、プロキシー方式を使用してAWS(AWS管理コンソール、言語ライブラリー、またはサードパーティーのツール)と対話する場合、プロキシーにアクセスキーと秘密のアクセスキーを提供する必要があります。プロキシがあなたのためにAWSサービスコールを実行するとき、コールにアクセスキーが含まれ、秘密のアクセスキーを使用してペイロードの暗号化が実行されます。 これらのキーがAWSで果たす重要な役割のため、信頼するエンティティとのみ
だけを共有する必要があります。新しいサードパーティ製のツールを試してみたいが、会社についてよく知らない場合は、運用AWSアカウントの資格情報を使用する代わりに、試用版のAWSテストアカウントを設定してください。そのため、ツールを使用しない場合、テストAWSアカウントを破棄して終了し、メインのプロダクションアカウントの潜在的なセキュリティ脆弱性に気を付けずに前進することができます。もちろん、新しいアクセスキーと秘密のアクセスキーを作成することはできますが、テストにプロダクションキーを使用してキーを変更すると、既存のキーを参照するすべての場所を更新する必要があるため、多くの作業が必要になります。
あなたが他の多くのAWSユーザーと似ている場合は、多数のツールとライブラリを使用し、それらに戻ってキーを更新するのは苦労します。あなたは、新しいツールをテストするために、非生産的なアカウントを使う方が良いです。