LoginSignup
1
1

More than 3 years have passed since last update.

ROSでRAMユーザを作り、ポリシーを割り当てたい

Last updated at Posted at 2020-05-11

寺尾です。

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 の場合はこのようになります。

OSSFullAccess

必要なのは、 Statement の中の部分です。ここをコピーすれば良いようです。しかし、コピーしただけではエラーが出るケースがありました。

PolicyDocument のSyntaxを見てみると、ActionResourceListで定義されているので、要素が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日追記:サポートに連絡したら方法が無いと。。。とりあえずリクエストを上げておきました。)

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1