英語が読めないので噛み砕いた日本語に翻訳しますlol
一応ほどほどにアクセス検証も行なっております。
ポリシーの注意事項
・カスタムポリシー:自分でゼロから作れるポリシー。使い回しできます。
・インラインポリシー:カスタムポリシーのように細かく設定できますが、使い回す様な保存はできません。
Lambda
・Lambdaで関数を作成する
サービス名 | 実際の表記 | あればリソース | そして解説 |
---|---|---|---|
Lambda | lambda:CreateFunction | Lambdaの関数の作成 ※リソースが必要 |
|
〃 | 全てのリソース | とりあえずこれにしておいて | |
IAM | iam:PassRole | arn:aws:iam::*:role/{Lambda関数名} | Lambda関数名から始まるロールを既存のロールとして読み込み |
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"lambda:CreateFunction"
],
"Resource": "*"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": "iam:PassRole",
"Resource": "arn:aws:iam::*:role/hoge-*"
}
]
}
※関数を作ることはできるけど、次のことができません!
・次のことを実行する権限がありません: cloudformation:DescribeStackResources.
・User: is not authorized to perform: kms:ListAliases on resource: *
→多分トリガーの設定ができないとおっしゃっている・・・
・コードの書き換えもできない
→なんと・・・保存ボタンは押せるけど、コードの変更は反映されていない!print文とかでない。
・Lambdaで関数を削除する
サービス名 | 実際の表記 | あればリソース | そして解説 |
---|---|---|---|
Lambda | lambda:DeleteFunction | Lambdaの関数の削除 ※リソースが必要 |
|
〃 | 全てのリソース | とりあえずこれにしておいて |
消せました。
・Lambdaで関数のインラインコードを更新して反映させる
作成するやつだけでは更新できなかったので…
サービス名 | 実際の表記 | あればリソース | そして解説 |
---|---|---|---|
Lambda | lambda:UpdateFunctionCode | Lambdaの関数の更新 | |
〃 | 全てのリソース | とりあえずこれにしておいて |
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "lambda:UpdateFunctionCode",
"Resource": "*"
}
]
}
S3
・Bucketを作成する
これは簡単
サービス名 | 実際の表記 | あればリソース | そして解説 |
---|---|---|---|
S3 | s3:CreateBucket | バケットを作る | |
〃 | arn:aws:s3:::{バケット名-*} | *が使えるのでバケット名を縛ることができる | |
resouce: arn:aws:s3:::hoge-* としたら、バケットを作る時に hoge-bucket としなければならない。 |
|||
プレフィックスが違うと作成できないよ。 |
・S3基本操作のロールを作る
ためになります。
https://dev.classmethod.jp/cloud/aws/access-control-on-specific-path-on-s3bucket/
サービス名 | 実際の表記 | あればリソース | そして解説 |
---|---|---|---|
S3 | s3:ListBucket | arn:aws:s3:::{PJ名}-* | ListObjectするために必要なやつ |
S3 | s3:GetObject | 〃 | オブジェクトが見れる |
S3 | s3:PutObject | 〃 | オブジェクトが更新、追加できる |
S3 | s3:DeleteObject | 〃 | オブジェクトが削除できる |
S3 | s3:PutBucketVersioning | 〃 | バケットのバージョニングが確認できる |
S3 | s3:ListAllMyBuckets | * | コンソール画面からバケット一覧が見れる |
S3 | s3:HeadBucket | * | 正直なぞい |
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:ListBucketVersions",
"s3:ListBucket",
"s3:DeleteObject",
"s3:PutBucketVersioning"
],
"Resource": [
"arn:aws:s3:::hoge-*"
]
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets",
"s3:HeadBucket"
],
"Resource": "*"
}
]
}
・Lambdaの基本操作のロールを作る
サービス名 | 実際の表記 | あればリソース | そして解説 |
---|---|---|---|
Lambda | lambda:UpdateFunctionCode | arn:aws:lambda:::function:hoge-* | インラインコードで書いて変更を保存し反映させる |
Lambda | lambda:InvokeFunction | 〃 | ラムダからラムダを呼び出すやつ |
Lambda | lambda:ListVersionsByFunction | 〃 | ? |
Lambda | lambda:GetFunction | 〃 | 関数の読み込み |
Lambda | lambda:ListAliases | 〃 | エイリアスの取得。エイリアスはファンクションのバージョンてきなやつ。任意で保存可能。 |
Lambda | lambda:CreateAlias | 〃 | エイリアスの作成 |
Lambda | lambda:ListFunctions | * | 関数の一覧 |
Lambda | lambda:GetAccountSettings | * | Lambdaコンソールのところにアクセスする |
Lambda | lambda:ListLayers | * | レイヤー一覧 |
Lambda | lambda:ListLayerVersions | * | レイヤーのバージョン一覧 |
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"lambda:UpdateFunctionCode",
"lambda:InvokeFunction",
"lambda:ListVersionsByFunction",
"lambda:GetFunction",
"lambda:ListAliases",
"lambda:CreateAlias"
],
"Resource": "arn:aws:lambda:*:*:function:hoge-*"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"lambda:ListFunctions",
"lambda:GetAccountSettings",
"lambda:ListLayers",
"lambda:ListLayerVersions"
],
"Resource": "*"
}
]
}
特定のS3バケットにだけアクセス
・バケット名一覧は取得できる
・hogeで始まるバケット以外は、中身がみれない
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:GetAccountPublicAccessBlock",
"s3:ListAllMyBuckets",
"s3:ListJobs"
],
"Resource": "*"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"s3:Get*",
"s3:List*"
],
"Resource": [
"arn:aws:s3:::*/*",
"arn:aws:s3:*:*:job/*",
"arn:aws:s3:::hoge*"
]
}
]
}
・LambdaのS3トリガーがついているかどうかを確認する
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"lambda:ListEventSourceMappings",
"lambda:GetPolicy"
],
"Resource": "*"
}
]
}