IAMロール実践ガイド|EC2・Lambda・GitHub Actionsへの権限付与とアクセスキーレス設計

現場実践|IAMロール実践
IAMロール実践ガイド|EC2・Lambda・GitHub Actionsへの権限付与とアクセスキーレス設計
「IAMユーザーのアクセスキーをEC2に直接置いてしまっている」——IAMロールを使ったアクセスキーレス設計・EC2インスタンスプロファイル・Lambdaのロール・OIDC認証の実践を解説します。
💡 アクセスキーをEC2のコードやGitHubに置くのはAWSセキュリティの最大リスクのひとつ。IAMロールを使えばアクセスキー不要でAWSサービスへのアクセスが実現できます。
1. IAMロールとIAMユーザーの違い
| IAMユーザー | IAMロール | |
|---|---|---|
| 主な用途 | 人間がコンソールにログインする | EC2・Lambda・ECS等のAWSサービスが使う |
| 認証方式 | アクセスキー/パスワード(固定) | 一時的な認証情報(自動ローテーション) |
| セキュリティ | アクセスキーの漏洩リスクあり | アクセスキー不要なのでリスクゼロ |
2. EC2インスタンスプロファイルの設定
# IAMロールを作成(EC2用)
aws iam create-role \
--role-name EC2-S3ReadOnly \
--assume-role-policy-document file://ec2-trust.json
# ec2-trust.json の内容
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Principal": {"Service": "ec2.amazonaws.com"},
"Action": "sts:AssumeRole"
}]
}
# S3読み取りポリシーをアタッチ
aws iam attach-role-policy \
--role-name EC2-S3ReadOnly \
--policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess
# インスタンスプロファイルを作成してEC2に付与
aws iam create-instance-profile --instance-profile-name EC2-S3ReadOnly-Profile
aws iam add-role-to-instance-profile \
--instance-profile-name EC2-S3ReadOnly-Profile \
--role-name EC2-S3ReadOnly3. GitHub Actions でOIDCを使ったアクセスキーレス認証
GitHub ActionsからAWSにアクセスする場合、アクセスキーをSecretsに保存するのは非推奨です。GitHub OIDCとIAMのロール信頼ポリシーを設定することで、アクセスキー不要でGitHub ActionsがAWSのIAMロールを引き受けられます。
# 信頼ポリシーにGitHub OIDCプロバイダーを追加
{
"Statement": [{
"Effect": "Allow",
"Principal": {
"Federated": "arn:aws:iam::ACCOUNT_ID:oidc-provider/token.actions.githubusercontent.com"
},
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": {
"StringEquals": {
"token.actions.githubusercontent.com:aud": "sts.amazonaws.com"
},
"StringLike": {
"token.actions.githubusercontent.com:sub": "repo:YOUR-ORG/YOUR-REPO:*"
}
}
}]
}4. アクセスキーを使わざるを得ない場合の管理
- 90日ごとのローテーション:アクセスキーは90日以内にローテーションすることをAWSのベストプラクティスとして推奨している
- Secrets Managerで管理:アクセスキーはAWS Secrets Managerに保存してアプリケーション起動時に動的取得する
- 最小権限ポリシー:アクセスキーに付与するポリシーは最小権限に限定する。AdministratorAccessは絶対に付与しない
📌 この記事のポイント
- EC2・Lambda等のAWSサービスにはIAMロール(インスタンスプロファイル)を使いアクセスキーを使わない
- GitHub ActionsはOIDCでIAMロールを引き受けることでSecretsへのアクセスキー保存が不要になる
- やむを得ずアクセスキーを使う場合は90日ローテーション・Secrets Manager管理・最小権限が必須
キャリアの疑問、一緒に解決しませんか?
Infra Academyでは、インフラ系ITエンジニアを目指す方への個別サポートを行っています。2026年7月からフリーランス講師として本格始動予定です。
📚 関連記事
資格取得後のキャリアに、AI活用という選択肢を
資格取得の先に現場でのIT効率化を任される場面が増えます。職場のルーティン業務にAIをどう組み込めるか、無料のセルフ診断(3問・約1分)でヒントが得られます。
この記事を読んでいる方へのおすすめ:
【編集・制作ポリシー】
本記事はRoute Bloom編集部が公式ドキュメント・技術仕様書の一次情報をもとに作成しています。ITインフラ・技術情報は急速に変化するため、実装前に最新の公式ドキュメントをご確認ください。情報の正確性には万全を期していますが、最新情報は各公式サイトをご確認ください。
本記事はRoute Bloom編集部が公式ドキュメント・技術仕様書の一次情報をもとに作成しています。ITインフラ・技術情報は急速に変化するため、実装前に最新の公式ドキュメントをご確認ください。情報の正確性には万全を期していますが、最新情報は各公式サイトをご確認ください。
【編集・制作ポリシー】
本記事はRoute Bloom編集部が各ベンダー公式ドキュメント・エンジニア監修をもとに作成しています。インフラ・クラウド構築は環境により異なります。本番環境への適用前に必ずテストを実施してください。情報の正確性には万全を期していますが、最新情報は各公式ドキュメントをご確認ください。
本記事はRoute Bloom編集部が各ベンダー公式ドキュメント・エンジニア監修をもとに作成しています。インフラ・クラウド構築は環境により異なります。本番環境への適用前に必ずテストを実施してください。情報の正確性には万全を期していますが、最新情報は各公式ドキュメントをご確認ください。
【編集・制作ポリシー】
本記事はRoute Bloom編集部が各ベンダー・技術標準の公式ドキュメントをもとに作成しています。 インフラ・クラウド技術に関する最終判断は実際の環境・バージョンで検証のうえ実施してください。 情報の正確性には万全を期していますが、最新情報は各公式ドキュメントをご確認ください。
本記事はRoute Bloom編集部が各ベンダー・技術標準の公式ドキュメントをもとに作成しています。 インフラ・クラウド技術に関する最終判断は実際の環境・バージョンで検証のうえ実施してください。 情報の正確性には万全を期していますが、最新情報は各公式ドキュメントをご確認ください。
この記事で学んだスキルをさらに深めたい方へ
AWS・クラウド技術をさらに深く学びたい方に。試験対策から実践まで網羅した参考書を活用しましょう。
Amazonアソシエイトプログラムを利用しています。
ABOUT ME




