Tôi có thể tạo một vai trò mới để tham khảo một chính sách hiện có không?


10

Hiện tại tôi có một nhóm S3 được chia sẻ có quyền truy cập cụ thể vào các đường dẫn chính cụ thể (ví dụ như các thư mục) cho các trường hợp khác nhau. Tôi đã có thể tạo hồ sơ cá nhân với vai trò mới của mình và kiểm tra không có vấn đề giới hạn truy cập vào thư mục đó.

Vấn đề của tôi là có một vai trò chung hiện có với các chính sách được xác định, mà tôi cũng muốn có thể đưa vào vai trò mới của mình cho mỗi ngăn xếp.

Trong điện toán đám mây có thể bao gồm các chính sách được xác định trong một vai trò để được bao gồm trong một vai trò khác mà không phải xác định lại tài liệu chính sách trong vai trò mới không?

Một cái gì đó như sau:

"AppTierS3AccessRole": {
        "Type": "AWS::IAM::Role",
        "Properties": {
            "AssumeRolePolicyDocument": {
                "Statement": [
                    {
                        "Effect": "Allow",
                        "Principal": {
                            "Service": [ "ec2.amazonaws.com" ]
                        },
                        "Action": [ "sts:AssumeRole" ]
                    }
                ]
            },
            "Path": "/",
            "Policies": [ { "Ref": "existing-policy" } ]
        }
    },

"Chính sách hiện hành" là phần quan trọng ở đây. Tôi đã cố gắng tìm arn của chính sách hiện có để thử và tham khảo nó nhưng tôi hơi bị mắc kẹt.


Có thể hoàn thành cùng một giải pháp bằng cách thêm nhiều vai trò vào hồ sơ cá thể, nhưng từ những gì tôi đã đọc, có một hạn chế là bạn chỉ có thể chỉ định một vai trò cho mỗi hồ sơ cá thể.
hughmcmanus

Câu trả lời:


12

src: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html

Các AWS::IAM::Roleloại hiện có một ManagedPolicyArnstrường nơi bạn có thể đặt này. Bạn chỉ cần lấy ARN (dễ lấy từ bảng điều khiển IAM) và đặt nó vào trường đó. Trong ví dụ dưới đây, tôi đã tạo một vai trò cung cấp quyền truy cập ECR chỉ đọc để hình ảnh của tôi có thể kéo các container docker từ ECR.

  ecrRole:
    Type: AWS::IAM::Role
    Properties:
      Path: "/"
      ManagedPolicyArns:
        - "arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
        - Effect: Allow
          Principal:
            Service:
            - ec2.amazonaws.com
          Action:
          - sts:AssumeRole

4

Bạn có thể đạt được điều này bằng cách sử dụng các chính sách được quản lý . Đặt chính sách đã xác định mà bạn muốn chia sẻ trong chính sách do khách hàng quản lý, sau đó đính kèm chính sách được xác định đó vào từng vai trò mà bạn muốn sử dụng. Mọi thay đổi trong tương lai đối với chính sách được quản lý của bạn sẽ ngay lập tức được áp dụng cho tất cả các vai trò có chính sách được quản lý kèm theo.

Bạn có thể tạo chính sách được quản lý khách hàng trong CloudFormation, thông qua tài nguyên AWS :: IAM :: ManagedPolicy hoặc đính kèm chính sách được quản lý hiện có.


3
Bạn có thể chỉ ra cách thức trong Cloudform không?
lony

1

Để mở rộng câu trả lời của @ markusk: Chính sách được quản lý - có, đó.

Thí dụ:

"ManagedPolicy": {
  "Type": "AWS::IAM::ManagedPolicy",
  "Properties": {
    "Description": "something descriptive",
    "Groups": [ ... ref(s) for groups ... ],
    "Roles: [{"Ref":"AppTierS3AccessRole"}],
    "Users": [ ... ref(s) for users ... ],
    "PolicyDocument": {
      "Version": "2012-10-17",
      "Statement": [
        ...
      ]
    }
  }
}

-1

Không, bạn không thể nhúng một vai trò trong một vai trò khác tại thời điểm này. Các lựa chọn thay thế duy nhất tôi có thể nghĩ đến là:

  • Tạo một hồ sơ cá thể mới với AWS :: IAM :: InstanceProfile và gán vai trò chung hiện có cho nó.
  • Trước khi tạo ngăn xếp CloudFormation của bạn, hãy chạy một tập lệnh sao chép vai trò chung. ví dụ: Nó tạo ra một vai trò mới, liệt kê tất cả các chính sách cho vai trò chung hiện có và tạo lại chúng trong vai trò mới. Sau đó, bạn có thể gán vai trò mới cho tài nguyên AWS :: IAM :: InstanceProfile mới trong mẫu của bạn và sử dụng nó cho (các) thể hiện EC2 của bạn hoặc khởi chạy cấu hình.

Tôi cuối cùng đã làm một cái gì đó tương tự như đề nghị thứ hai của bạn. Tôi đã chuyển các chính sách trong vai trò chung vào mẫu đám mây, sau đó thêm chúng vào vai trò mới nếu nó cần được tạo.
hughmcmanus

Mặc dù câu trả lời này là chính xác khi được viết, nhưng nó dài hơn, vì AWS đã đưa ra các chính sách được quản lý kể từ đó, cho phép bạn sử dụng lại các chính sách.
markusk
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.