ROSでRAMユーザを作り、ポリシーを割り当てたい
寺尾です。
ROSは、Alibaba Cloudで構築の自動化を行うプロダクト、RAMは、AWSのIAMと同じで認証と認可を行うプロダクトです。
ROSでRAMユーザーを作って、ポリシーを割り当てたいんですが、案外サンプルが少なくて、ユーザまでは作れるのですが、ポリシーの割り宛てに苦労しました。
ようやくできたので、何方かの助けになればと思い、残しておきます。
1つ残念なのはシステムポリシーをそのまま割り当てることは出来ず、カスタムポリシーのみということです。システムポリシーと同一内容のカスタムポリシーを割り当てれば、とりあえずやりたいことは可能です。
結果だけ知りたい方はサンプル記述例までジャンプしてください。
ROSでRAMユーザーを作るSyntax
RAM User 作成のドキュメント はこちらにあります。
ユーザ作成の書式はこんな感じです。
RAMユーザ作成Syntax (JSON)
{
"Type": "ALIYUN::RAM::User",
"Properties": {
"UserName": String,
"DisplayName": String,
"Groups": List,
"LoginProfile": Map,
"Policies": List,
"MobilePhone": String
}
}
だいたい理解できるのですが、 Policies
だけが難解でした。
やりたかったこととしては、 AliyunECSFullAccess
や、 AliyunOSSFullAccess
などといったプリセットされたシステムポリシーを割り当てたかったのですが、残念ながらそれが出来ないようです(たぶん)。
ですので、システムポリシーと同じ内容でカスタムポリシーを書くことになるようです。
ポリシーのSyntax (JSON)
"Policies": [
{
"PolicyName": String,
"PolicyDocument": Map,
"Description": String
}
]
ポリシーには、Map形式のPolicyDocumentがありますが、中身が分かりません。探してみるとALIYUN::RAM::ManagedPolicyのページにありました。
"PolicyDocument" : {
"Version": String,
"Statement" : [
{
"Effect" : String,
"Action" : List,
"Resource" : List
}
]
}
RAMポリシーを定義するときに書かないと行けないやつと同じみたいです。では、システムポリシーの内容はどこで分かるんでしょうか?
【RAM】【権限管理】【ポリシー】に移動して、該当のシステムポリシーを検索します。 AliyunOSSFullAccess
の場合はこのようになります。
必要なのは、 Statement
の中の部分です。ここをコピーすれば良いようです。しかし、コピーしただけではエラーが出るケースがありました。
PolicyDocument
のSyntaxを見てみると、Action
とResource
はList
で定義されているので、要素が1つでも配列で囲います。
ここまでそろえばだいたいかけるかと思います。
サンプル記述例 (YAML)
普段からYAMLでROSテンプレートを書いているので、例示もYAMLで書きます。必要な人はJSONに変換してください。
パスワードだけは入力するようにしておきました。
これで、AliyunECSFullAccess
と、AliyunOSSFullAccess
相当のポリシーを割り当てるユーザーが自動で作れます。
サンプル記述例 (YAML)
Parameters:
RamUserPassword:
Type: String
NoEcho: true
Description: RAM User Password
Resources:
RamAdminUser:
Type: 'ALIYUN::RAM::User'
Properties:
UserName: user1byROS
DisplayName: user1byROS
LoginProfile:
PasswordResetRequired: false
Password: Ref: RamUserPassword
MFABindRequired: false
Policies:
- PolicyName: AliyunECSFullAccess_custom
PolicyDocument:
Version: '1'
Statement:
- Action: ["ecs:*"]
Resource: ['*']
Effect: Allow
- Action: ["vpc:DescribeVpcs","vpc:DescribeVSwitches"]
Resource: ['*']
Effect: Allow
Description: note
- PolicyName: AliyunOSSFullAccess_custum
PolicyDocument:
Version: '1'
Statement:
- Action: ['oss:*']
Resource: ['*']
Effect: Allow
Description: custom
感想
もう少し簡単にシステムポリシーを割り当てる方法がある様な気がするのですが、探して見つかればまた報告します。
(2020年5月12日追記:サポートに連絡したら方法が無いと。。。とりあえずリクエストを上げておきました。)
Author And Source
この問題について(ROSでRAMユーザを作り、ポリシーを割り当てたい), 我々は、より多くの情報をここで見つけました https://qiita.com/eterao/items/966e15eff23ccbb750ba著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .