IAMユーザーにおけるアクセスキーの複数アクセスキーの扱いについて

このブログシリーズ 「クラウドセキュリティ 実践集」 では、一般的なセキュリティ課題を取り上げ、「なぜ危険なのか?」 というリスクの解説から、「どうやって直すのか?」 という具体的な修復手順(コンソール、AWS CLI、Terraformなど)まで、分かりやすく解説します。

この記事では、IAMユーザーによる複数アクセスキーの扱いについて解説します。

リスク:

IAMユーザーが複数のアクセスキーを持つことは、セキュリティ上のリスクを高めます。主なリスクは以下の通りです。

  • 露出リスクの増大: 複数のアクセスキーが存在する場合、そのうちの1つが誤って公開されてしまう可能性が高まります。例えば、意図せずコードリポジトリにコミットされたり、アクセス権限が広すぎる場所に保存されたりするリスクがあります。
  • ローテーションの複雑化: 複数のキーをローテーションする必要があるため、管理が煩雑になり、ローテーションの漏れが発生しやすくなります。古いキーが長期間使用され続けると、セキュリティリスクが増大します。
  • 影響範囲の拡大: 1つのアクセスキーが漏洩した場合でも影響は限定的ですが、複数のキーが漏洩すると、より多くのリソースやアクションが悪用される可能性があります。
  • 監査の困難性: 複数のキーが使用されている場合、どのアクティビティがどのキーによって行われたのかを追跡しにくくなり、セキュリティインシデント発生時の原因究明が困難になることがあります。

対策:

セキュリティを強化するため、IAMユーザーは原則として1つのアクセスキーのみを持つように管理することが推奨されます。

  • 不要なアクセスキーの削除: IAMユーザーに複数のアクセスキーが設定されている場合は、使用されていないアクセスキーを特定し、削除します。
  • アクセスキーのローテーション: 定期的にアクセスキーをローテーションし、古いキーの使用を停止します。AWSのベストプラクティスに従い、90日以内のローテーションを推奨します。
  • 一時的な認証情報の利用: 可能であれば、長期的なアクセスキーの使用を避け、AWS STS (Security Token Service) を利用して一時的な認証情報を利用することを検討します。これにより、アクセスキーの管理負担を軽減し、セキュリティを向上させることができます。
  • IAM Rolesの活用: EC2インスタンスやLambda関数などのAWSリソースがAWSサービスにアクセスする場合は、IAM Rolesを使用します。IAM Rolesはアクセスキーを管理する必要がなく、より安全な方法でリソースに権限を付与できます。

修復方法

AWSコンソールを用いて、ネットワークACLで不要なインバウンドルールの削除、またはより制限された送信元からのアクセスに修正を行います。

AWSコンソールでの修復手順

  1. AWSコンソール にログインします。
  2. ナビゲーションペインから IAM を選択します。
  3. 左側のメニューから ユーザー を選択し、該当するIAMユーザーの名前をクリックします。
  4. セキュリティ認証情報 タブを選択します。
  5. アクセスキー セクションで、状態が「アクティブ」になっているアクセスキーが複数存在する場合、不要なアクセスキーの横にある 削除 ボタンをクリックします。
  6. 確認ダイアログが表示されるので、削除 をクリックします。
  7. アクティブなアクセスキーが1つになるまで、この手順を繰り返します。

Terraformでの修復手順

TerraformでIAMユーザーのアクセスキーを管理している場合、aws_iam_access_key リソースの数を調整することで、IAMユーザーが持つアクセスキーの数を制御できます。不要なアクセスキーを削除するには、対応する aws_iam_access_key リソースを Terraform の設定から削除し、terraform apply を実行します。

# IAMユーザーの作成 (例)
resource "aws_iam_user" "example" {
  name = "example-user"
}

# 最初のアクセスキー (必要な場合)
resource "aws_iam_access_key" "example_key_1" {
  user = aws_iam_user.example.name
}

# 不要になったアクセスキー (削除対象)
# resource "aws_iam_access_key" "example_key_2" {
#   user = aws_iam_user.example.name
# }

上記の例では、aws_iam_access_key.example_key_2 がコメントアウトされているため、このIAMユーザーには1つのアクティブなアクセスキーのみが存在します。もし複数のアクセスキーが定義されている場合は、不要なリソース定義を削除し、terraform apply を実行することで、AWS上の不要なアクセスキーが削除されます。

最後に

今回は、1つのIAMユーザーが複数のアクセスキーを持つことによるセキュリティリスクと、それを是正するための対策について解説しました。IAMユーザーは原則として一時的な認証情報の利用を推奨しますが、どうしても必要となる場合は1つのアクセスキーのみを持つように管理し、定期的なローテーションや一時的な認証情報の利用を検討することで、クラウド環境のセキュリティを向上させることができます。IAMの適切な管理は、AWS環境全体のセキュリティ基盤を強化する上で非常に重要です。

この問題の検出は弊社が提供するSecurifyのCSPM機能で簡単に検出及び管理する事が可能です。

運用が非常に楽に出来る製品になっていますので、ぜひ興味がある方はお問い合わせお待ちしております。

最後までお読みいただきありがとうございました。この記事が皆さんの役に立てば幸いです

この記事をシェアする

クラウドセキュリティ対策実践集一覧へ戻る

貴社の利用状況に合わせた見積もりを作成します。

料金プランを詳しく見る