一般社団法人 全国個人事業主支援協会

COLUMN コラム

  • クラウドセキュリティの基本:IAMポリシー設計のベストプラクティス

IAMがクラウドセキュリティの要である理由

IAM(Identity and Access Management)は、クラウド環境におけるセキュリティの根幹です。Gartnerの予測では、2025年までにクラウドセキュリティインシデントの99%はユーザー側の設定ミスに起因するとされています。その中でもIAMの設定ミスが最も多い原因の一つです。

適切なIAMポリシー設計は、データ漏洩、不正アクセス、権限昇格攻撃を防ぐための最も基本的かつ効果的な対策です。本記事ではAWSを例に、IAMポリシー設計のベストプラクティスを解説します。

最小権限の原則

IAM設計の基本原則は「最小権限の原則(Principle of Least Privilege)」です。ユーザーやサービスには、タスクの遂行に必要最小限の権限のみを付与します。

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowS3ReadSpecificBucket",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::my-app-data",
"arn:aws:s3:::my-app-data/*"
]
}
]
}

この例では、特定のS3バケットに対する読み取りのみを許可しています。s3:*のようなワイルドカードや、Resource: “*”の使用は避けるべきです。

IAMロールの設計パターン

IAMユーザーに直接ポリシーをアタッチするのではなく、IAMロールを活用するのがベストプラクティスです。特にサービス間の連携では、IAMロールの引き受け(AssumeRole)を使います。

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"aws:SourceAccount": "123456789012"
}
}
}
]
}

Conditionブロックで信頼関係を制限することで、混乱した代理攻撃(Confused Deputy Attack)を防止できます。aws:SourceAccountやaws:SourceArnの条件を追加して、意図しないサービスからのロール引き受けを防ぎましょう。

組織レベルのIAM管理

AWS Organizationsを使った複数アカウント管理では、SCP(Service Control Policies)が重要です。SCPはアカウントレベルで権限の上限を設定し、個々のIAMポリシーを超えた制御を提供します。

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyLeaveOrganization",
"Effect": "Deny",
"Action": "organizations:LeaveOrganization",
"Resource": "*"
},
{
"Sid": "DenyRootUserActions",
"Effect": "Deny",
"Action": "*",
"Resource": "*",
"Condition": {
"StringLike": {
"aws:PrincipalArn": "arn:aws:iam::*:root"
}
}
}
]
}

このSCPは、組織からの離脱とrootユーザーの使用を禁止しています。組織全体のセキュリティベースラインを強制するのに有効です。

継続的な監査と改善

IAMポリシーは一度設計して終わりではありません。IAM Access Analyzerを使って未使用のアクセス権限を検出し、定期的に権限を棚卸しましょう。CloudTrailのログを分析して、実際に使用されているAPIアクションのみを許可するポリシーに絞り込むことで、最小権限を継続的に維持できます。

この記事をシェアする

  • Twitterでシェア
  • Facebookでシェア
  • LINEでシェア