IAM ロールとポリシー
JSON ポリシードキュメントを作成してロールにアタッチし、アイデンティティベースのポリシーとリソースベースのポリシーの違いを理解します。
「IAM ロールとポリシー」はCoddyKit上の無料Cloud & IT Cert Prepレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCloud & IT Cert Prep学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cloud & IT Cert Prepコースには全4レッスンが含まれています。
IAM ポリシー: 権限を表す言語
IAM ポリシーは、許可される操作を定義する JSON ドキュメントです。各ステートメントには Effect(Allow または Deny)、Action、Resource があります。コードはその例を示しています。
{
'Version': '2012-10-17',
'Statement': [
{
'Effect': 'Allow',
'Action': [
's3:GetObject',
's3:PutObject'
],
'Resource': 'arn:aws:s3:::my-bucket/*'
}
]
}アイデンティティベースポリシーとリソースベースポリシー
アイデンティティベースポリシーはユーザーやロールにアタッチされ、そのアイデンティティが実行できる操作を定義します。リソースベースポリシーはリソース自体にアタッチされ、誰がそのリソースにアクセスできるかを定義します。
# Example S3 bucket policy (resource-based)
{
'Version': '2012-10-17',
'Statement': [{
'Effect': 'Allow',
'Principal': {
'AWS': 'arn:aws:iam::123456789012:role/MyAppRole'
},
'Action': 's3:GetObject',
'Resource': 'arn:aws:s3:::my-bucket/*'
}]
}IAM ロール: 一時的なアイデンティティ
IAM ロールは、短時間だけ引き受けるアイデンティティです。有効期限のある一時的な認証情報を提供するため、EC2、Lambda、その他のサービスに適しています。
# Attach an IAM role to an EC2 instance (instance profile)
aws ec2 associate-iam-instance-profile \
--instance-id i-0abcdef1234567890 \
--iam-instance-profile Name=MyEC2Role信頼ポリシー: ロールを引き受けられる主体
すべてのロールには、誰が引き受けられるかを定義する信頼ポリシーと、引き受けた後に何を実行できるかを定義するアクセス許可ポリシーがあります。信頼ポリシーがなければ、アクセスできません。
# Trust policy for a Lambda execution role
{
'Version': '2012-10-17',
'Statement': [{
'Effect': 'Allow',
'Principal': {
'Service': 'lambda.amazonaws.com'
},
'Action': 'sts:AssumeRole'
}]
}AWS サービスロール: EC2 と Lambda
EC2 から AWS を呼び出す必要がある場合は、ロールをラップするインスタンスプロファイルを付与します。認証情報は自動的にローテーションされるため、キーをハードコードする必要はありません。Lambda も同様に動作します。
# Retrieve role credentials from EC2 metadata (IMDSv2)
TOKEN=$(curl -X PUT 'http://169.254.169.254/latest/api/token' \
-H 'X-aws-ec2-metadata-token-ttl-seconds: 21600')
curl -H "X-aws-ec2-metadata-token: $TOKEN" \
http://169.254.169.254/latest/meta-data/iam/security-credentials/MyEC2Roleクロスアカウントでのロール引き受け
クロスアカウントロールを使用すると、あるアカウントのユーザーが別のアカウントのロールを引き受け、そのアカウントのリソースにアクセスできます。これにより、マルチアカウント構成で各所に重複したユーザーを作成せずに済みます。
# Assume a cross-account role from Account A
aws sts assume-role \
--role-arn arn:aws:iam::999999999999:role/CrossAccountRole \
--role-session-name my-sessionポリシー条件: きめ細かな制御
Condition は、MFA を必須にする、特定の IP 範囲やリージョンにアクセスを制限するといった追加ルールをポリシーに加えます。これにより、アクセス許可をより厳密にできます。
# Policy that requires MFA for sensitive actions
{
'Effect': 'Deny',
'Action': ['iam:*', 'cloudtrail:*'],
'Resource': '*',
'Condition': {
'BoolIfExists': {
'aws:MultiFactorAuthPresent': 'false'
}
}
}アクセス許可の境界
アクセス許可の境界は、ポリシーがより多くの権限を付与していても、アイデンティティが取得できる最大権限を制限します。開発者に独自のロールを作成させる際の安全策です。
# Attach a permissions boundary to a user
aws iam put-user-permissions-boundary \
--user-name alice \
--permissions-boundary arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccessポリシー評価ロジック
AWS がリクエストを評価する際、最優先されるルールがあります。明示的な Deny は常にアクセスを拒否します。その後、アクセスを許可するには、ポリシーのすべてのレイヤーで許可される必要があります。
IAM Policy Simulator
IAM Policy Simulator は、実際に操作を実行せずに、アイデンティティがその操作を実行できるかどうかをテストします。本番環境に移行する前に権限をデバッグするのに便利です。
# Simulate an IAM policy evaluation via CLI
aws iam simulate-principal-policy \
--policy-source-arn arn:aws:iam::123456789012:user/alice \
--action-names s3:PutObject \
--resource-arns arn:aws:s3:::my-bucket/*フェデレーションアクセス用のロール
Okta、Google、Active Directory の外部ユーザーは、フェデレーション(SAML または OIDC)を通じてロールを引き受けられます。IAM ユーザーを 1 つも作成せずに、数百万人へアクセスを付与できます。
理解度チェック
このレッスンで扱った AWS Solutions Architect (SAA-C03) の概念について、理解度を確認しましょう。
レッスンのまとめ
ここまでのまとめです。ポリシーは Allow と Deny を定義する JSON ルールであり、ロールは一時的な認証情報を提供し、条件はきめ細かな制御を追加します。次は、最小権限です。
よくある質問
「IAM ロールとポリシー」レッスンは無料ですか?
はい。「IAM ロールとポリシー」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cloud & IT Cert Prepコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cloud & IT Cert Prepコースには全4レッスンが含まれています。
「IAM ロールとポリシー」で何を学びますか?
JSON ポリシードキュメントを作成してロールにアタッチし、アイデンティティベースのポリシーとリソースベースのポリシーの違いを理解します。 ブラウザで直接実行するハンズオンコードでCloud & IT Cert Prepを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Cloud & IT Cert Prepを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCloud & IT Cert Prepは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「IAM ロールとポリシー」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCloud & IT Cert Prepレッスンでコードを書いて実行できますか?
はい。すべてのCloud & IT Cert Prepレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- IAM ユーザーとグループ
- IAM ロールとポリシー
- 最小権限の原則
- IAM のベストプラクティスと MFA