最小権限の原則
実際のシナリオに最小権限の原則を適用し、AWS 管理ポリシーとインラインポリシーを適切に使い分けます。
「最小権限の原則」はCoddyKit上の無料Cloud & IT Cert Prepレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCloud & IT Cert Prep学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cloud & IT Cert Prepコースには全4レッスンが含まれています。
最小権限とは
最小権限とは、各アイデンティティに本当に必要な権限だけを与え、余分な権限を与えないことです。認証情報が漏洩しても、被害を小さく抑えられます。🛡️
デフォルト拒否から始める
AWS では最小権限を実現しやすくなっています。新しいユーザーやロールは、最初は権限ゼロです。不要な権限を後から取り除くのではなく、必要な権限だけを追加します。
過剰な権限付与: よくあるミス
よくあるミスは、手早く済ませるために AdministratorAccess を付与することです。バグが一つあるだけで、データ全体を消去される可能性があります。代わりに、特定のアクションとリソースに範囲を絞ってください。
# AVOID: wildcard permissions
{
'Effect': 'Allow',
'Action': '*',
'Resource': '*'
}
# PREFER: scoped permissions
{
'Effect': 'Allow',
'Action': ['dynamodb:GetItem', 'dynamodb:Query'],
'Resource': 'arn:aws:dynamodb:us-east-1:123456789:table/Orders'
}AWS 管理ポリシーとカスタマー管理ポリシー
AWS 管理ポリシーは便利ですが、多くの場合で権限範囲が広すぎます。カスタマー管理ポリシーでは、アプリケーションが実際に使用するバケットやテーブルだけを正確に指定できます。
# Create a scoped customer-managed policy
aws iam create-policy \
--policy-name LambdaOrdersReader \
--policy-document file://orders-reader-policy.jsonIAM Access Analyzer
IAM Access Analyzer は、アカウント外部に公開されているリソースを監視します。アイデンティティが実際に使用した操作を読み取り、最小限のポリシーを作成することもできます。
# Enable IAM Access Analyzer for the account
aws accessanalyzer create-analyzer \
--analyzer-name MyAccountAnalyzer \
--type ACCOUNT条件を使用して権限を厳密にする
アクションを許可する必要がある場合でも、条件によってリスクを抑えられます。MFA を必須にする、会社の IP に限定する、ユーザー自身のフォルダだけに制限する、といった方法があります。✨
# Allow users to manage only their own folder in S3
{
'Effect': 'Allow',
'Action': ['s3:GetObject', 's3:PutObject'],
'Resource': 'arn:aws:s3:::shared-bucket/${aws:username}/*'
}ガードレールとしてのアクセス許可の境界
チームに独自の IAM を管理させる場合、アクセス許可の境界によって、そのチームのロールが実行できる操作の上限を設定できます。チームは自由に構築できますが、設定した上限を超えることはできません。
セッションポリシーによる時間制限付きアクセス
ロールを引き受ける際に、そのセッションの権限をさらに絞り込むセッションポリシーを渡せます。パイプラインに必要最小限のアクセスだけを付与する場合に最適です。
# Assume a role with a restrictive session policy
aws sts assume-role \
--role-arn arn:aws:iam::123456789012:role/DeployRole \
--role-session-name deploy-session \
--policy '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Action":"lambda:UpdateFunctionCode","Resource":"arn:aws:lambda:us-east-1:123456789012:function:MyApp"}]}'タグベースのアクセス制御 (ABAC)
ABAC は、すべてのリソースを列挙するのではなく、タグの一致に基づいてアクセスを許可します。たとえば、ロールに対して、自身のチームのタグが付いた EC2 インスタンスだけを停止することを許可できます。
{
'Effect': 'Allow',
'Action': 'ec2:StopInstances',
'Resource': '*',
'Condition': {
'StringEquals': {
'ec2:ResourceTag/Team': '${aws:PrincipalTag/Team}'
}
}
}未使用の権限を確認する
AWS は各権限が最後にいつ使用されたかを追跡します。最終アクセス日時データでは、90 日以上使用されていない権限を確認でき、削除の明確な候補を特定できます。
# Get service last-accessed data for a role
aws iam generate-service-last-accessed-details \
--arn arn:aws:iam::123456789012:role/MyLambdaRole
# Retrieve the report (use the JobId from above)
aws iam get-service-last-accessed-details --job-id <JobId>データアクセスにおける最小権限
データにも最小権限を適用します。ユーザーを自身の S3 フォルダに限定し、DynamoDB のアクセス範囲をユーザー ID で絞り、各アプリケーションに専用のデータベースログインを与えます。
理解度チェック
このレッスンで扱った AWS Solutions Architect (SAA-C03) の概念について、理解度を確認しましょう。
レッスンのまとめ
ここまでのまとめです。最小権限とは最小限の権限だけを与えることであり、Access Analyzer は未使用の権限を見つけ、条件と境界は権限を厳密に保ちます。次は、IAM のベストプラクティスと MFA です。
よくある質問
「最小権限の原則」レッスンは無料ですか?
はい。「最小権限の原則」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cloud & IT Cert Prepコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cloud & IT Cert Prepコースには全4レッスンが含まれています。
「最小権限の原則」で何を学びますか?
実際のシナリオに最小権限の原則を適用し、AWS 管理ポリシーとインラインポリシーを適切に使い分けます。 ブラウザで直接実行するハンズオンコードでCloud & IT Cert Prepを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Cloud & IT Cert Prepを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCloud & IT Cert Prepは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「最小権限の原則」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCloud & IT Cert Prepレッスンでコードを書いて実行できますか?
はい。すべてのCloud & IT Cert Prepレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。