現場実践|IAMロール実践

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

「IAMユーザーのアクセスキーをEC2に直接置いてしまっている」——IAMロールを使ったアクセスキーレス設計・EC2インスタンスプロファイル・Lambdaのロール・OIDC認証の実践を解説します。

読了目安:約18分更新日:2026年3月

💡 アクセスキーをEC2のコードやGitHubに置くのはAWSセキュリティの最大リスクのひとつ。IAMロールを使えばアクセスキー不要でAWSサービスへのアクセスが実現できます。

この記事を書いた人
現役ITエンジニア・IT講師(経験14年)
CCNA・CCNP 取得LPIC-1 保有SES現場を複数経験

AWS環境のIAM設計・セキュリティ改善を複数案件で担当してきた立場から解説します。

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-S3ReadOnly

3. 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管理・最小権限が必須

キャリアの疑問、一緒に解決しませんか?

Route Bloomでは、インフラ系ITエンジニアを目指す方への個別サポートを行っています。2026年7月からフリーランス講師として本格始動予定です。

※IAMの仕様はAWSにより変更される場合があります。

ABOUT ME
たから
サラリーマンをしながら開業して経営やってます。 今年、本業で独立・別事業を起業予定です。 ◆経験:IT講師/インフラエンジニア/PM/マネジメント/採用/運用・保守・構築・設計 ◆取得資格:CCNA/CCNP/LPIC-1/AZ-900/FE/サーティファイC言語 ◆サイドビジネス:アパレル事業/複数のWEBメディアを運営