B: AWS JSON policy elements: Principal - AWS Identity and Access Management
Principal について少しまとめてみる。
リンク
IAM を assume できる AWS のサービス一覧
IAM Policy Grammar
IAM Role は何かに引き継がせる事ができる。何に引き継げるか、を IAM Role Principal で定義する。
code:txt
<principal_block> = ("Principal" | "NotPrincipal") : ("*" | <principal_map>)
<principal_map> = { <principal_map_entry>, <principal_map_entry>, ... }
<principal_map_entry> = ("AWS" | "Federated" | "Service" | "CanonicalUser") :
文法的に 4 種類あるということがわかる。 ただし、省略記法もいくつかあり、 "*" の他に、 AWS に対してのみ "Principal": { "AWS": "*" } とできたり。
AWS
AWS の IAM ユーザ
"Principal": { "AWS": "arn:aws:iam::123456789012:root" }
"Principal": { "AWS": "123456789012" }
Federated
Web Identity Federation というやつ。モバイルアプリなどで使うのが主だと思われる。
"Principal": { "Federated": "cognito-identity.amazonaws.com" }
"Principal": { "Federated": "www.amazon.com" }
Service
AWS のサービス。 service-name.amazonaws.com の形式。
code:json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": [
"ecs.amazonaws.com",
"elasticloadbalancing.amazonaws.com"
]
},
"Action": "sts:AssumeRole"
}
]
}
例えば、EC2 起動時に role を割り当てるなら ec2.amazonaws.com に sts:AssumeRole を許可している必要がある。
CanonicalUser
AWS IAM ユーザと同じ。所属 Org などの色々な情報が隠された状態になる。
Service Principal の探し方
s3.amazonaws.com とか。
上記の Service-linked roles が Yes になっているものの、リンク先にある
公式の方法
2. CloudTrail をチェックする
https://gyazo.com/7533ec282589863114fe3b7b9ad049b4
3. 以下をチェックしてみる