B: AWS JSON policy elements: Principal - AWS Identity and Access Management
#AWS #JSON #policy #elements #Principal #Identity #and #Access #Management #ブックマーク #bookmark
AWS JSON policy elements: Principal - AWS Identity and Access Management
#:aws #:memo
Principal について少しまとめてみる。
リンク
https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html
https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html
IAM を assume できる AWS のサービス一覧
https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_grammar.html
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") :
<principal_id_string>, <principal_id_string>, ...
文法的に 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 とか。
1. https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html
上記の Service-linked roles が Yes になっているものの、リンク先にある
公式の方法
2. CloudTrail をチェックする
https://gyazo.com/7533ec282589863114fe3b7b9ad049b4
3. 以下をチェックしてみる
https://gist.github.com/shortjared/4c1e3fe52bdfa47522cfe5b41e5d6f22
https://github.com/boto/botocore/blob/develop/botocore/data/endpoints.json