iam-policy-dsl

A Kotlin DSL for declaring AWS IAM policy documents

Лицензия

Лицензия

Группа

Группа

com.github.lewis-od
Идентификатор

Идентификатор

iam-policy-dsl
Последняя версия

Последняя версия

1.1
Дата

Дата

Тип

Тип

pom
Описание

Описание

iam-policy-dsl
A Kotlin DSL for declaring AWS IAM policy documents
Ссылка на сайт

Ссылка на сайт

https://github.com/lewis-od/iam-policy-dsl
Система контроля версий

Система контроля версий

https://github.com/lewis-od/iam-policy-dsl

Скачать iam-policy-dsl

Имя Файла Размер
iam-policy-dsl-1.1.pom
Обзор

Как подключить последнюю версию

<!-- https://jarcasting.com/artifacts/com.github.lewis-od/iam-policy-dsl/ -->
<dependency>
    <groupId>com.github.lewis-od</groupId>
    <artifactId>iam-policy-dsl</artifactId>
    <version>1.1</version>
    <type>pom</type>
</dependency>
// https://jarcasting.com/artifacts/com.github.lewis-od/iam-policy-dsl/
implementation 'com.github.lewis-od:iam-policy-dsl:1.1'
// https://jarcasting.com/artifacts/com.github.lewis-od/iam-policy-dsl/
implementation ("com.github.lewis-od:iam-policy-dsl:1.1")
'com.github.lewis-od:iam-policy-dsl:pom:1.1'
<dependency org="com.github.lewis-od" name="iam-policy-dsl" rev="1.1">
  <artifact name="iam-policy-dsl" type="pom" />
</dependency>
@Grapes(
@Grab(group='com.github.lewis-od', module='iam-policy-dsl', version='1.1')
)
libraryDependencies += "com.github.lewis-od" % "iam-policy-dsl" % "1.1"
[com.github.lewis-od/iam-policy-dsl "1.1"]

Зависимости

Библиотека не имеет зависимостей. Это самодостаточное приложение, которое не зависит ни от каких других библиотек.

Модули Проекта

Данный проект не имеет модулей.

IAM Policy DSL

A Kotlin DSL for creating AWS IAM Policy documents

Usage

Add to your Gradle dependencies as:

implementation("com.github.lewis-od:iam-policy-dsl:1.1")

The DSL can then be used like:

val myPolicy: Policy = policy {
    statement("EC2FullAccess") {
        effect(ALLOW)
        action("ec2:*")
        resource("*")
    }
    statement("S3ProdAccess") {
        effect(ALLOW)
        action("s3:ListObjects")
        action("s3:GetObject")
        resource("arn:aws:s3:::prod-bucket")
    }
}
val policyDocument: String = myPolicy.toJson()

Examples

Identity-Based Policy

policy {
    statement("EC2FullAccess") {
        effect(ALLOW)
        action("ec2:*")
        resource("*")
    }
    statement("S3ProdAccess") {
        effect(ALLOW)
        action("s3:ListObjects", "s3:GetObject")
        resource("arn:aws:s3:::prod-bucket")
    }
}

Corresponds to:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "EC2FullAccess",
            "Effect": "Allow",
            "Action": [
                "ec2:*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "S3ProdAccess",
            "Effect": "Allow",
            "Action": [
                "s3:ListObjects",
                "s3:GetObject"
            ],
            "Resource": "arn:aws:s3:::prod-bucket"
        }
    ]
}

Resource-Based Policy

policy("2008-10-17") {
    statement("AllowAccess") {
        effect(ALLOW)
        action("sts:AssumeRole")
        principal {
            aws("arn:aws:iam::123456789123:root", 
                "arn:aws:iam::456789012345:root")
        }
        action("ecr:BatchCheckLayerAvailability", 
               "ecr:BatchGetImage",
               "ecr:GetDownloadUrlForLayer")
    }
}

Corresponds to:

{
  "Version": "2008-10-17",
  "Statement": [
    {
      "Sid": "AllowAccess",
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::123456789123:root",
          "arn:aws:iam::456789012345:root"
        ]
      },
      "Action": [
        "ecr:BatchCheckLayerAvailability",
        "ecr:BatchGetImage",
        "ecr:GetDownloadUrlForLayer"
      ]
    }
  ]
}

Trust Policy

policy {
    statement("AllowAssumeRole") {
        effect(ALLOW)
        action("sts:AssumeRole")
        principal {
            aws("arn:aws:iam::000000000000:user/user-name")
        }
    }
}

Corresponds to:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowAssumeRole",
            "Effect": "Allow",
            "Action": ["sts:AssumeRole"],
            "Principal": { "AWS": "arn:aws:iam::000000000000:user/user-name" }
        }
    ]
}

Версии библиотеки

Версия
1.1
1.0