AWS SDK で使用する AWS IAM アクセスキーのベストプラクティス

AWS SDK で使用する AWS IAM アクセスキーのベストプラクティス

複数のプログラムが異なる 2 つのサービスにアクセスする必要があるため、大企業が複数の AWS サービスへのプログラムによるアクセスに使用しているベストプラクティスを知りたいのですが、どのように管理していますか? 異なる 2 つのサービスごとにプログラムごとに複数のアクセス キーを作成しましたか、それともすべてのサービスにアクセスできる単一のアクセス キーを作成しましたか?

答え1

EC2 / LambdaなどのAWSリソースのベストプラクティスは、IAMロールを使用することです。ここつまり、サーバーのユーザーを作成するのではなく、EC2 サーバーに関連付けられた一連の権限を持つ、サービスが引き受けることができるロールを作成します。

ロールを持つサーバーには、実行時に「一時的な」認証情報が付与されるため、IAM ロールが許可するすべてのサービスにアクセスできます。「一時的な」というのは、サービスに付与される認証情報は短期間、おそらく 24 時間ですが、有効期限が切れると新しい認証情報が発行されます。これは通常透過的ですが、認証情報を使用するソフトウェアを作成する場合は、ときどき確認する必要があります。細かい点については正確には述べていないかもしれませんが、多かれ少なかれ正しいです。

AWS には、ロールの定義を容易にする定義済みのポリシーがあります。

たとえば、「このロールを持つ EC2 サーバーは、SQS にプッシュ、SQS からプル、この 1 つの Lambda 関数を実行できます」というロールを定義し、明示的に付与されていないものはすべて拒否できます。必要な権限を取得するには、少し実験が必要になる場合があります。EC2 サーバーなどのリソースが侵害された場合に、AWS に対する管理者権限がないため、すべてを削除したり、暗号通貨のマイニングを開始したりできないようにするには、最小限の権限が最適です。

大企業で AWS 関連の業務に携わっている場合は、AWS のトレーニングを受けることをお勧めします。Cloud Guru などの AWS Architect Associate のオンライン トレーニングは、最低限必要なトレーニングです。AWS は複雑です。私は長年 AWS でフルタイムで働いていますが、毎日何か新しいことを学んでいます。

答え2

まず、リソース (SQS、EC2、ElastiCache など) へのアクセス ポリシーを事前に定義する必要があります。その後、プログラムによるアクセス権を持つユーザーを追加し、安全な方法で認証情報を保存するか、ロールを使用してアクセス用のサービスに割り当てます。たとえば、RDS にアクセスするための IAM ロールを作成し、それを ec2 インスタンスに割り当てて、ec2 インスタンスからデータベースにアクセスしてみます。

関連情報