A collection of notes and resources
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny", // Allow | Deny
"Action": "*",
"Resource": "*",
"Condition": {
// 条件と合致する場合に適用する
"StringNotEquals": {
"aws:RequestedRegion": ["us-east-1", "us-west-2"]
}
}
},
{
"Effect": "Deny",
"Action": ["s3:*", "ec2:*", "rds:*"],
"Resource": "*", // ARNを指定できるのはDenyの時だけ
"Condition": {
"StringNotEquals": {
"aws:RequestedRegion": ["us-east-1", "us-west-2"]
}
}
}
]
}
"aws:ResourceOrgID": "${aws:PrincipalOrgID}""aws:ResourceOrgPaths": "${aws:PrincipalOrgPaths}"scan eligibility expiredというメッセージが表示されるらしいcloudformation.amazonaws.comを指定しているIAMロールが、CFn用のサービスロールと言って良いRoleARNを指定して、CFnの実行にこのIAMロールを使うようにする
sts:AssumeRoleを許可RoleARNを指定するIAMポリシーと、信頼ポリシーを設定する必要がある
// アカウントA: ロールを引き受けるアカウント
// アカウントB: ロールを引き受けさせるアカウント
// アカウントAのIAMポリシー
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"sts:AssumeRole" // 引き受けるアクション
],
"Resource": [
"arn:aws:iam::*:role/JobFunctionRole" // 引き受けたいロースのARN
],
"Effect": "Allow" // 許可
}
]
}
// アカウントBのIAMロールの信頼ポリシー(IAMポリシーではない)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::987654321987:role/IdentityRole" // アカウントAのロールのARN
},
"Action": "sts:AssumeRole"
}
]
}
SDKでassumeRoleしたい時にはセッション名も指定しないといけないみたい
aws:MultiFactorAuthPresentをConditionに指定する### KMS
{{resolve:secretsmanager:MySecret:SecretString:password}}とかaccess-keys-rotated
maxAccessKeyAgeでそれまでにアクセスキーローテーションできてるか監視できるAWS-EnableCloudTrail