TL;DR
IAMユーザーのアクセスキーを使わずIAMロールを使おう。
背景
無性にアプリケーションにAWSのアクセス権限を付与したいときありますよね。
過去にAWSを触っていた際に、頑張ってたどり着いたのがコード上でクライアントにアクセスキーを付与する方法でした。
AmazonS3Client(Access Key, Secret Key);
当時はやったー動いたと思っていたのですが、AWS認定試験の勉強をする際になんとこの方法はセキュリティを弱めるのでNGと不正解の選択肢になっていました。
ちなみに正しいやり方はIAMロールをインスタンスに割り当てることです。
なぜIAMロールを使うべきなのか
まず、IAMユーザーのアクセスキーは「長期的な認証情報」作成します。なのでアプリケーションにアクセスキーを埋め込むと同じ認証情報を使いまわすことになり、これは漏洩のリスクを高めることになります。
対してIAMロールは、一時的なセキュリティ認証情報を提供します。この認証情報は自動的にローテーションされるため漏洩のリスクが格段に低くなります。またIAMロールの使用状況を監査することができます。こちらのが安全なうえに管理もしやすそうです。
じゃあアクセスキーいつ使うの
IAMロールの方がセキュリティ上優れていることは明白ですが、アクセスキーにも使用すべき場面があります。調べた結果下記の用途で使用されるそうです。
1. IAMロールを使用できないワークロード
例えば、WordPressプラグインの中にはAWSへのアクセス権限を必要とするが、ロールを付与できないものがあります。その場合にアクセスキーを入力することで権限を与えます。
2. サードパーティのAWSクライアント
そもそもそんなものがあるんですねとまたひとつ知識が増えました。例を挙げると、Cyberduckといったサービスがある様です。
おまけ
認証情報は複数の場所に配置されるのでどの認証情報を使うかわからないと困りますね。安心してください。優先順位をつけてくれています。
詳しくは下記リンクを参考にしてください。
設定と認証情報の優先順位
この連載の記事
-
TECH
責任ある生成AI利用のための「Guardrails for Amazon Bedrock」とは ― AWS re:Invent 2023 -
TECH
同世代エンジニアに刺激を受けた!JAWS-UG「若手エンジニア応援LT会」参加レポート -
TECH
AWS CDKでGuardDutyのRDS保護を有効化しよう(として詰みかけた話) -
TECH
ノーコードで生成AI連携! SlackからAmazon Bedrockのエージェントに質問 -
TECH
Terraform:変数の値が未代入でもインタラクティブな入力を回避する方法 -
TECH
Amazon SESでEメールの送信機能/受信機能を作る手順 -
TECH
Amazon BedrockからWeb上のコンテンツを参照する新機能「Web Crawler」 -
TECH
CX視点で興味深かった「AWS Summit Japan 2024」のセッション -
TECH
AWS EC2でkubeadmを用いたKubernetesクラスターを作ってみたのでメモ -
TECH
AWSアカウントのサインインに「IAM Identity Center」をお勧めする理由 - この連載の一覧へ