AWS::CloudFormation::Authentication - AWS CloudFormation

AWS::CloudFormation::Authentication

Use o recurso AWS::CloudFormation::Authentication para especificar credenciais de autenticação para arquivos ou fontes especificados com o recurso AWS::CloudFormation::Init.

Para incluir informações de autenticação para um arquivo ou fonte especificado com o AWS::CloudFormation::Init, use a propriedade uris se a fonte é um URI ou a propriedade buckets se a fonte é um bucket do Amazon S3. Para obter mais informações sobre arquivos, consulte Arquivos. Para obter mais informações sobre fontes, consulte Origens.

Você também pode especificar as informações de autenticação para arquivos diretamente no recurso AWS::CloudFormation::Init. A chave de arquivos do recurso contém uma propriedade nomeada authentication. Você pode usar a propriedade authentication para associar informações de autenticação definidas em um recurso diretamente a um arquivo.AWS::CloudFormation::Authentication

Para arquivos, o AWS CloudFormation busca informações de autenticação na seguinte ordem:

  1. A propriedade authentication da chave AWS::CloudFormation::Init files.

  2. A propriedade uris ou buckets do recurso AWS::CloudFormation::Authentication.

Para fontes, o CloudFormation buscará informações de autenticação na propriedade uris ou buckets do recurso AWS::CloudFormation::Authentication.

Sintaxe

Para declarar essa entidade no modelo do CloudFormation, use a seguinte sintaxe:

Você deve estar ciente das seguintes considerações ao usar o tipo AWS::CloudFormation::Authentication:

  • Ao contrário da maioria dos recursos do CloudFormation, o tipo AWS::CloudFormation::Authentication não contêm um bloco chamado Properties, mas, em vez disso, uma lista de blocos nomeados pelo usuário, cada um com as próprias propriedades de autenticação.

    Nem todas as propriedades pertencem a cada tipo de autenticação; consulte a propriedade tipo para obter mais detalhes.

  • Ao contrário da maioria dos recursos do CloudFormation, os nomes de propriedades usam letras minúsculas concatenadas.

JSON

{ "Type" : "AWS::CloudFormation::Authentication" { "String" : { "accessKeyId" : String, "buckets" : [ String, ... ], "password" : String, "secretKey" : String, "type" : String, "uris" : [ String, ... ], "username" : String, "roleName" : String } } }

YAML

Type: AWS::CloudFormation::Authentication String: accessKeyId: String buckets: - String password: String secretKey: String type: String uris: - String username: String roleName: String

Propriedades

accessKeyId

Especifica o ID da chave de acesso para autenticação S3.

Obrigatório: condicional. Pode ser especificada somente se a propriedade type estiver definida como S3.

Tipo: string

buckets

Uma lista delimitada por vírgulas de buckets Amazon S3 a serem associados às credenciais de autenticação S3.

Obrigatório: condicional. Pode ser especificada somente se a propriedade type estiver definida como S3.

Tipo: lista de valores de strings

password

Especifica a senha para autenticação básica.

Obrigatório: condicional. Pode ser especificada somente se a propriedade de tipo estiver definida como basic.

Tipo: string

secretKey

Especifica a chave secreta para a autenticação S3.

Obrigatório: condicional. Pode ser especificada somente se a propriedade type estiver definida como S3.

Tipo: string

type

Especifica se o esquema de autenticação usa um nome de usuário e uma senha (básico) ou um ID de chave de acesso e chave secreta (S3).

Se você especificar basic, especifique as propriedades username, passworde uris.

Se você especificar S3, especifique as propriedades accessKeyId, secretKeye buckets (opcional).

Obrigatório: Sim

Valores válidos: basic | S3

uris

Uma lista delimitada por vírgulas de URIs a serem associados às credenciais de autenticação básicas. A autorização se aplica a URIs especificados e a todos os URIs mais específicos. Por exemplo, se você especificar http://www.example.com, a autorização também se aplicará a http://www.example.com/test.

Obrigatório: condicional. Pode ser especificada somente se a propriedade type estiver definida como basic.

Tipo: lista de valores de strings

username

Especifica o nome de usuário para autenticação básica.

Obrigatório: condicional. Pode ser especificada somente se a propriedade de tipo estiver definida como basic.

Tipo: string

roleName

Descreve a função para a autenticação baseada em função.

Importante

Essa função deve estar contida no perfil de instância anexado à instância do EC2. Um perfil de instância pode conter apenas uma função do IAM.

Obrigatório: condicional. Pode ser especificada somente se a propriedade type estiver definida como S3.

Tipo: string

Exemplos

nota

Ao contrário da maioria dos recursos, o tipo AWS::CloudFormation::Authentication define uma lista de blocos nomeados pelo usuário, cada um dos quais contém propriedades de autenticação que usam nomenclatura em letras minúsculas concatenadas.

Autenticação de servidor Web do EC2

Este trecho de modelo mostra como obter um arquivo de um bucket S3 privado em uma instância EC2. As credenciais usadas para autenticação são definidas no recurso AWS::CloudFormation::Authentication e referenciadas pelo recurso AWS::CloudFormation::Init na seção arquivos.

JSON

"WebServer": { "Type": "AWS::EC2::Instance", "DependsOn" : "BucketPolicy", "Metadata" : { "AWS::CloudFormation::Init" : { "config" : { "packages" : { "yum" : { "httpd" : [] } }, "files" : { "/var/www/html/index.html" : { "source" : { "Fn::Join" : [ "", [ "http://s3.amazonaws.com/", { "Ref" : "BucketName" }, "/index.html" ] ] }, "mode" : "000400", "owner" : "apache", "group" : "apache", "authentication" : "S3AccessCreds" } }, "services" : { "sysvinit" : { "httpd" : { "enabled" : "true", "ensureRunning" : "true" } } } } }, "AWS::CloudFormation::Authentication" : { "S3AccessCreds" : { "type" : "S3", "accessKeyId" : { "Ref" : "AccessKeyID" }, "secretKey" : { "Ref" : "SecretAccessKey" } } } }, "Properties": { EC2 Resource Properties ... } }

YAML

WebServer: Type: AWS::EC2::Instance DependsOn: BucketPolicy Metadata: AWS::CloudFormation::Init: config: packages: yum: httpd: [] files: /var/www/html/index.html: source: !Join - '' - - 'http://s3.amazonaws.com/' - !Ref BucketName - '/index.html' mode: '000400' owner: apache group: apache authentication: S3AccessCreds services: sysvinit: httpd: enabled: 'true' ensureRunning: 'true' AWS::CloudFormation::Authentication: S3AccessCreds: type: S3 accessKeyId: !Ref AccessKeyID secretKey: !Ref SecretAccessKey Properties: EC2 Resource Properties ...

Especificar a autenticação básica e S3

O exemplo do trecho de modelo inclui dois tipos de autenticação: básica e S3.

JSON

"AWS::CloudFormation::Authentication" : { "testBasic" : { "type" : "basic", "username" : { "Ref" : "UserName" }, "password" : { "Ref" : "Password" }, "uris" : [ "example.com/test" ] }, "testS3" : { "type" : "S3", "accessKeyId" : { "Ref" : "AccessKeyID" }, "secretKey" : { "Ref" : "SecretAccessKey" }, "buckets" : [{ "Fn::Sub": "${BucketName}" }] } }

YAML

AWS::CloudFormation::Authentication: testBasic: type: basic username: !Ref UserName password: !Ref Password uris: - 'example.com/test' testS3: type: S3 accessKeyId: !Ref AccessKeyID secretKey: !Ref SecretAccessKey buckets: - !Sub ${BucketName}

Perfis do IAM

O exemplo a seguir mostra como usar as funções do IAM:

  • myRole é um recurso AWS::IAM::Role.

  • A instância do Amazon EC2 que executa cfn-init está associada a myRole por meio de um perfil da instância.

  • O exemplo especifica a autenticação usando a propriedade buckets, como na autenticação Amazon S3. Você também pode especificar a autenticação por nome.

JSON

"AWS::CloudFormation::Authentication": { "rolebased" : { "type": "S3", "buckets": [{ "Fn::Sub": "${BucketName}" }], "roleName": { "Ref": "myRole" } } }

YAML

AWS::CloudFormation::Authentication: rolebased: type: S3 buckets: - !Sub ${BucketName} roleName: !Ref myRole