Todos os produtos
Search
Central de documentação

Key Management Service:CreateSecret

Última atualização: Oct 16, 2026

Cria um segredo e armazena a versão inicial do segredo.

Descrição da operação

  • Para obter detalhes sobre a política de acesso que deve ser concedida a um usuário do Resource Access Management (RAM) ou a uma função do RAM para invocar esta operação de API, consulte Controle de acesso.

  • Você deve especificar o nome do segredo, o valor do segredo da versão inicial e o ID da versão. O status da versão inicial é marcado como ACSCurrent.

  • O Key Management Service (KMS) usa a chave especificada para criptografar e proteger o valor do segredo. A chave e o segredo devem pertencer à mesma instância do KMS, e a chave deve ser uma chave simétrica.

    Nota

    O KMS criptografa o valor do segredo de cada versão. Metadados como o nome do segredo, o ID da versão e as tags de status da versão não são criptografados.

  • Antes de criptografar o valor do segredo, você deve ter a permissão kms:GenerateDataKey na chave.

Este tópico fornece um exemplo de criação de um segredo do ApsaraDB RDS chamado mydbconninfo com o ID da versão inicial VersionId definido como v1 e o valor do segredo SecretData definido como {"Accounts":[{"AccountName":"user1","AccountPassword":"****"}]}.

Experimente agora

Experimente esta API no OpenAPI Explorer, sem necessidade de assinatura manual. Chamadas bem-sucedidas geram automaticamente código SDK correspondente aos seus parâmetros. Faça o download com segurança de credenciais integrada para uso local.

Testar

Autorização RAM

A tabela abaixo descreve a autorização necessária para chamar esta API. Você pode defini-la em uma política do Resource Access Management (RAM). As colunas da tabela estão detalhadas abaixo:

  • Ação: As ações que podem ser usadas no elemento Action das instruções de política de permissão do RAM para conceder permissões para executar a operação.

  • API: A API que você pode chamar para executar a ação.

  • Nível de acesso: O nível de acesso predefinido concedido para cada API. Valores válidos: create, list, get, update e delete.

  • Tipo de recurso: O tipo de recurso que suporta autorização para executar a ação. Indica se a ação suporta permissão em nível de recurso. O recurso especificado deve ser compatível com a ação. Caso contrário, a política será ineficaz.

    • Para APIs com permissões em nível de recurso, os tipos de recursos obrigatórios são marcados com um asterisco (*). Especifique o Nome de Recurso Alibaba Cloud (ARN) correspondente no elemento Resource da política.

    • Para APIs sem permissões em nível de recurso, é exibido como Todos os Recursos. Use um asterisco (*) no elemento Resource da política.

  • Chave de condição: As chaves de condição definidas pelo serviço. A chave permite controle granular, aplicando-se somente a ações ou a ações associadas a recursos específicos. Além das chaves de condição específicas do serviço, o Alibaba Cloud fornece um conjunto de chaves de condição comuns aplicáveis a todos os serviços compatíveis com RAM.

  • Ação dependente: As ações dependentes necessárias para executar a ação. Para concluir a ação, o usuário RAM ou a função RAM deve ter permissões para executar todas as ações dependentes.

Ação

Nível de acesso

Tipo de recurso

Chave de condição

Ação dependente

kms:CreateSecret

create

*Todos os recursos.

*

Nenhuma
  • kms:GenerateDataKey

Parâmetros da solicitação

Parâmetro

Tipo

Obrigatório

Descrição

Exemplo

SecretName

string

Sim

O nome do segredo. O nome do segredo deve ser exclusivo na região atual. O nome pode ter até 192 caracteres e pode conter letras, dígitos, sublinhados (_), barras (/), sinais de mais (+), sinais de igual (=), pontos (.), hifens (-) e arrobas (@). Os requisitos de nomenclatura variam de acordo com o tipo de segredo:

  • Quando SecretType é definido como Generic (segredo genérico), Rds (segredo do ApsaraDB RDS) ou Redis (segredo do Redis ou Tair), o nome não pode começar com acs/.

  • Quando SecretType é definido como RAMCredentials (segredo do RAM), use o valor fixo $Auto. Nesse caso, o KMS gera automaticamente o nome do segredo, que começa com acs/ram/user/ e inclui o nome de exibição do usuário do Resource Access Management (RAM).

  • Quando SecretType é definido como ECS (segredo do ECS), o nome deve começar com acs/ecs/.

mydbconninfo

VersionId

string

Sim

O ID da versão inicial. O ID da versão deve ser exclusivo dentro do segredo. O ID da versão pode ter até 64 caracteres.

v1

EncryptionKeyId

string

Não

O ID da chave usada para criptografar o valor do segredo.

Nota

A chave e o segredo devem pertencer à mesma instância do KMS, e a chave deve ser uma chave simétrica.

key-gzz63ff0db5hg3qje****

SecretData

string

Sim

O valor do segredo. O valor pode ter até 30.720 bytes (30 KB) de comprimento. O KMS criptografa o valor usando a chave especificada e o armazena na versão inicial.

  • Quando SecretType é definido como Generic (segredo genérico), você pode personalizar o valor do segredo.

  • Quando SecretType é definido como Rds (segredo do ApsaraDB RDS), o valor do segredo deve estar no seguinte formato: {"Accounts":[{"AccountName":"","AccountPassword":""}]}. AccountName especifica o nome de usuário da instância do ApsaraDB RDS e AccountPassword especifica a senha da conta.

  • Quando SecretType é definido como Redis (segredo do Redis), defina este parâmetro como $Auto.

  • Quando SecretType é definido como RAMCredentials (segredo do RAM), o valor do segredo deve estar no seguinte formato: {"AccessKeys":[{"AccessKeyId":"","AccessKeySecret":""}]}. AccessKeyId especifica o ID da AccessKey e AccessKeySecret especifica o segredo da AccessKey. Você deve especificar todos os pares de AccessKey do usuário do Resource Access Management (RAM).

  • Quando SecretType é definido como PolarDB, defina este parâmetro como $Auto.

  • Quando SecretType é definido como ECS (segredo do ECS), o valor do segredo deve estar em um dos seguintes formatos:

    • Quando SecretSubType no parâmetro ExtendedConfig é definido como Password: {"UserName":"","Password": ""}. UserName especifica o nome de usuário usado para fazer login na instância ECS e Password especifica a senha de login.

    • Quando SecretSubType no parâmetro ExtendedConfig é definido como SSHKey: {"UserName":"","PublicKey": "", "PrivateKey": ""}. PublicKey especifica a chave pública SSH usada para fazer login na instância ECS e PrivateKey especifica a chave privada.

{"Accounts":[{"AccountName":"user1","AccountPassword":"****"}]}

SecretDataType

string

Não

O tipo do valor do segredo. Valores válidos:

  • text: texto. Este é o valor padrão.

  • binary: dados binários.

Nota

Quando SecretType é definido como Rds, Redis, PolarDB, RAMCredentials ou ECS, SecretDataType só pode ser definido como text.

text

Description

string

Não

A descrição do segredo.

mydbinfo

Tags

string

Não

As tags do segredo. Cada tag é um par chave-valor que consiste em uma chave de tag e um valor de tag.

A chave de tag e o valor de tag podem ter até 128 caracteres e podem conter letras maiúsculas e minúsculas, dígitos, barras (/), barras invertidas (), sublinhados (_), hifens (-), pontos (.), sinais de mais (+), sinais de igual (=), dois-pontos (:) e arrobas (@).

  • Uma chave de tag não pode começar com aliyun ou acs:.

  • Você pode adicionar até 20 tags a cada segredo.

[{\"TagKey\":\"key1\",\"TagValue\":\"val1\"},{\"TagKey\":\"key2\",\"TagValue\":\"val2\"}]

SecretType

string

Não

O tipo do segredo. Valores válidos:

  • Generic: segredo genérico. Este é o valor padrão.

  • Rds: segredo do ApsaraDB RDS.

  • Redis: segredo do Redis.

  • RAMCredentials: segredo do RAM.

  • ECS: segredo do ECS.

  • PolarDB: segredo do PolarDB.

Rds

ExtendedConfig

object

Não

A configuração estendida do segredo, que é usada para especificar a propriedade de um tipo de segredo específico. O valor pode ter até 1.024 caracteres.

  • Quando SecretType é definido como Generic (segredo genérico), este parâmetro é ignorado.

  • Quando SecretType é definido como Rds (segredo do ApsaraDB RDS), você deve especificar os seguintes parâmetros em ExtendedConfig:

    • SecretSubType (obrigatório): a subclasse do segredo. Valores válidos:

      • SingleUser: especifica que o Secrets Manager gerencia o segredo do ApsaraDB RDS no padrão de conta única. Durante a rotação do segredo, a senha da conta especificada é redefinida para uma nova senha aleatória.

      • DoubleUsers: especifica que o Secrets Manager gerencia o segredo do ApsaraDB RDS no padrão de conta dupla. ACSCurrent e ACSPrevious referenciam uma conta cada. Durante a rotação do segredo, a senha da conta referenciada por ACSPrevious é redefinida para uma nova senha aleatória e, em seguida, o Secrets Manager troca as contas referenciadas por ACSCurrent e ACSPrevious.

    • DBInstanceId (obrigatório): ID da instância do ApsaraDB RDS à qual a conta pertence.

    • CustomData (opcional): dados personalizados. O valor é um par chave-valor formatado em JSON. Você pode especificar até 10 pares chave-valor, separados por vírgulas (,). Exemplo: {"Key1": "v1", "fds":"fdsf"}. Valor padrão: {}.

  • Quando SecretType é definido como Redis (segredo do Redis), você deve especificar os seguintes parâmetros em ExtendedConfig:

    • SecretSubType (obrigatório): a subclasse do segredo. Valores válidos:
      • DoubleUsers: especifica que o Secrets Manager gerencia o segredo do Redis no padrão de conta dupla. ACSCurrent e ACSPrevious referenciam uma conta cada. Durante a rotação do segredo, a senha da conta referenciada por ACSPrevious é redefinida para uma nova senha aleatória e, em seguida, o Secrets Manager troca as contas referenciadas por ACSCurrent e ACSPrevious.

    • AccountName (obrigatório): o nome de usuário do banco de dados.

    • CloneAccountName (obrigatório): o nome de usuário do banco de dados, que é o valor de AccountName acrescido do sufixo _clone.

    • AccountPrivilege (obrigatório): as permissões para acessar o banco de dados.

    • InstanceId (obrigatório): ID da instância do Redis.

    • RegionId (obrigatório): o ID da região da instância do Redis.

    • CustomData (opcional): dados personalizados. O valor é um par chave-valor formatado em JSON. Você pode especificar até 10 pares chave-valor, separados por vírgulas (,). Exemplo: {"Key1": "v1", "fds":"fdsf"}. Valor padrão: {}.

  • Quando SecretType é definido como RAMCredentials (segredo do RAM), você deve especificar os seguintes parâmetros em ExtendedConfig:

    • SecretSubType (obrigatório): a subclasse do segredo. Valor válido: RamUserAccessKey.

    • UserName (obrigatório): o nome do usuário do Resource Access Management (RAM).

    • CustomData (opcional): dados personalizados. O valor é um par chave-valor formatado em JSON. Você pode especificar até 10 pares chave-valor, separados por vírgulas (,). Valor padrão: {}.

  • Quando SecretType é definido como ECS (segredo do ECS), você deve especificar os seguintes parâmetros em ExtendedConfig:

    • SecretSubType (obrigatório): a subclasse do segredo. Valores válidos:

      • Password: senha do ECS.

      • SSHKey: chaves pública e privada SSH do ECS.

    • RegionId (obrigatório): o ID da região da instância ECS.

    • InstanceId (obrigatório): ID da instância ECS.

    • CustomData (opcional): dados personalizados. O valor é um par chave-valor formatado em JSON. Você pode especificar até 10 pares chave-valor, separados por vírgulas (,). Valor padrão: {}.

  • Quando SecretType é definido como PolarDB, você deve especificar os seguintes parâmetros em ExtendedConfig:

    • SecretSubType (obrigatório): DoubleUsers (valor fixo).

    • RegionId (obrigatório): o ID da região.

    • DBClusterId (obrigatório): ID da instância do cluster PolarDB.

    • DBType (obrigatório): MySQL ou PostgreSQL.

    • AccountName (obrigatório): o nome da conta.

    • CloneAccountName: o valor de AccountName acrescido de _clone.

    • AccountType: o tipo de conta. Apenas Normal é suportado.

    • AccountPrivilege: as permissões da conta. Este parâmetro está disponível apenas para MySQL.

    • DBName: o nome do banco de dados. Este parâmetro está disponível apenas para MySQL.

    • CustomData (opcional): dados personalizados. O valor é um par chave-valor formatado em JSON. Você pode especificar até 10 pares chave-valor, separados por vírgulas (,). Exemplo: {"Key1": "v1", "fds":"fdsf"}. Valor padrão: {}.

Nota

Quando SecretType é definido como Rds, Redis, PolarDB, RAMCredentials ou ECS, você deve definir este parâmetro.

{"SecretSubType":"SingleUser", "DBInstanceId":"rm-bp1b3dd3a506e****" ,"CustomData":{"Key1": "v1", "fds":"fdsf"}}

EnableAutomaticRotation

boolean

Não

Especifica se a rotação automática deve ser ativada. Valores válidos:

  • true: ativa a rotação automática.

  • false: desativa a rotação automática. Este é o valor padrão.

Nota

Este parâmetro só entra em vigor quando SecretType é definido como Rds (segredo do ApsaraDB RDS), PolarDB (segredo do PolarDB), Redis (segredo do Redis), RAMCredentials (segredo do RAM) ou ECS (segredo do ECS). Quando SecretType é definido como Generic (segredo genérico), a rotação automática não é suportada. Você pode chamar a operação PutSecretValue para rotacionar o segredo manualmente.

true

RotationInterval

string

Não

O intervalo para rotação automática. Valores válidos: de 6 horas a 8.760 horas (365 dias).
O valor deve estar no formato integer[unit]. integer especifica a duração do tempo e unit especifica a unidade de tempo.
Valores válidos para unit: d (dias), h (horas), m (minutos) e s (segundos). Por exemplo, tanto 7d quanto 604.800s indicam um intervalo de 7 dias.




Nota

Você deve definir este parâmetro apenas quando EnableAutomaticRotation estiver definido como true.

30d

DKMSInstanceId

string

Não

O ID da instância do KMS.

kst-bjj62d8f5e0sgtx8h****

Policy

string

Não

O conteúdo da política de acesso no formato JSON. O comprimento máximo é de 32.768 bytes.

Para obter mais informações sobre as políticas de segredo, consulte Visão geral das políticas de segredo. Se você não especificar este parâmetro, a política de acesso padrão será usada.

A política de acesso inclui os seguintes campos:

  • Version: a versão da política de acesso. Atualmente, apenas a versão 1 é suportada.

  • Statement: as instruções na política de acesso. Cada política de acesso contém uma ou mais instruções.

A política de acesso usa o seguinte formato:

{
    "Version": "1",
    "Statement": [
        {
            "Sid": "Enable RAM User Permissions",
            "Effect": "Allow",
            "Principal": {
              "RAM": ["acs:ram::12345678****:*"]
            },
            "Action": [
                "kms:*"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}

Detalhes da instrução:

  • Sid: opcional. O identificador de instrução personalizado. O valor pode ter até 128 caracteres e pode conter letras maiúsculas (A-Z), letras minúsculas (a-z), dígitos (0-9) e caracteres especiais (_/+=.@-).

  • Effect: obrigatório. Especifica se deve permitir ou negar as permissões na instrução da política. Valores válidos: Allow e Deny.

  • Principal: obrigatório. A entidade à qual a política está anexada. Você pode definir este campo como a conta atual do Alibaba Cloud (a conta à qual o segredo pertence), um usuário do RAM ou uma função do RAM na conta atual do Alibaba Cloud, ou um usuário do RAM ou uma função do RAM em outra conta do Alibaba Cloud.

  • Action: obrigatório. As operações de API a serem permitidas ou negadas. O valor deve começar com "kms:". Para obter a lista de operações disponíveis, consulte Visão geral das políticas de segredo. Se você especificar uma operação que não esteja na lista, a configuração não entrará em vigor.

  • Resource: obrigatório. O valor só pode ser *, que indica o segredo atual do KMS.

  • Condition: opcional. As condições que devem ser atendidas para que a autorização entre em vigor. Você pode usar condições para avaliar o contexto de uma solicitação de API e determinar se a instrução da política se aplica. O formato é "Condition": {"condition operator": {"condition key": "condition value"}}. Para obter mais informações, consulte Visão geral das políticas de segredo.

Nota

Depois de conceder permissão a um usuário do Resource Access Management (RAM) ou a uma função do RAM em outra conta do Alibaba Cloud, você também deve usar a conta do Alibaba Cloud do usuário ou da função do RAM para autorizá-los a usar o segredo no console do RAM. Somente então o usuário ou a função do RAM poderá usar o segredo. Para obter mais informações, consulte Exemplos de políticas personalizadas para o Key Management Service, Conceder permissão a um usuário do Resource Access Management (RAM) e Conceder permissões a uma função do RAM.

{"Version":"1","Statement": [{"Sid":"kms default secret policy","Effect":"Allow","Principal":{"RAM": ["acs:ram::119285303511****:*"]},"Action":["kms:*"],"Resource": ["*"] }] }

Para obter mais informações sobre os parâmetros de solicitação comuns, consulte Parâmetros comuns.

Elementos de resposta

Elemento

Tipo

Descrição

Exemplo

object

Arn

string

O Alibaba Cloud Resource Name (ARN).

acs:kms:cn-hangzhou:154035569884****:secret/mydbconninfo

AutomaticRotation

string

Indica se a rotação automática está ativada. Valores válidos:

  • Enabled: a rotação automática está ativada.

  • Disabled: a rotação automática está desativada.

  • Invalid: o status de rotação está anormal e o Secrets Manager não pode rotacionar o segredo automaticamente.

Nota

Este parâmetro é retornado apenas quando SecretType é definido como Rds, Redis, PolarDB, RAMCredentials ou ECS.

Enabled

DKMSInstanceId

string

O ID da instância do KMS.

kst-bjj62d8f5e0sgtx8h****

ExtendedConfig

string

A configuração estendida do segredo.

Nota

Este parâmetro é retornado apenas quando SecretType é definido como Rds, Redis, PolarDB, RAMCredentials ou ECS.

{\"SecretSubType\":\"SingleUser\", \"DBInstanceId\":\"rm-uf667446pc955****\", \"CustomData\":"Key1": "v1", "fds":"fdsf"} }

NextRotationDate

string

A hora da próxima rotação.

Nota

Este parâmetro é retornado apenas quando a rotação automática está ativada.

2023-07-06T18:22:03Z

RequestId

string

O ID da solicitação, que é um identificador exclusivo gerado pelo Alibaba Cloud para a solicitação. Você pode usar o ID para solucionar problemas.

3bf02f7a-015b-4f93-be0f-cc043fda2dd3

RotationInterval

string

O intervalo para rotação automática do segredo.
O valor está no formato integer[unit]. integer especifica a duração do tempo e unit especifica a unidade de tempo. Valor válido para unit: s (segundos). Por exemplo, um intervalo de rotação de 7 dias é representado como 604800s.

Nota

Este parâmetro é retornado apenas quando a rotação automática está ativada.

604800s

SecretName

string

O nome do segredo.

mydbconninfo

SecretType

string

O tipo do segredo. Valores válidos:

  • Generic: segredo genérico.

  • Rds: segredo do ApsaraDB RDS.

  • Redis: segredo do Redis.

  • RAMCredentials: segredo do RAM.

  • ECS: segredo do ECS.

  • PolarDB: segredo do PolarDB.

Rds

VersionId

string

O ID da versão do segredo.

v1

Exemplos

Resposta de sucesso

JSON formato

{
  "Arn": "acs:kms:cn-hangzhou:154035569884****:secret/mydbconninfo",
  "AutomaticRotation": "Enabled",
  "DKMSInstanceId": "kst-bjj62d8f5e0sgtx8h****",
  "ExtendedConfig": "{\\\"SecretSubType\\\":\\\"SingleUser\\\", \\\"DBInstanceId\\\":\\\"rm-uf667446pc955****\\\",  \\\"CustomData\\\":\"Key1\": \"v1\", \"fds\":\"fdsf\"} }",
  "NextRotationDate": "2023-07-06T18:22:03Z",
  "RequestId": "3bf02f7a-015b-4f93-be0f-cc043fda2dd3",
  "RotationInterval": "604800s",
  "SecretName": "mydbconninfo",
  "SecretType": "Rds",
  "VersionId": "v1"
}

Códigos de erro

Código de status HTTP

Código de erro

Mensagem de erro

Descrição

400 UnsupportedOperation This action is not supported.
400 Rejected.LimitExceeded The request was rejected because user create resource limit was exceeded
400 InvalidParameter The specified parameter is not valid.
400 Rejected.ShareQuotaExceedLimit Instance Share Quota Exceed Limit.
500 InternalFailure Internal Failure
403 Forbidden.DKMSInstanceNotFound The specified DKMS Instance is not found.
404 Forbidden.ResourceNotFound The resource is not found.
409 Rejected.ResourceExist The resource already exists.
409 Rejected.ResourceInDeleteWindow The secret is planned to be deleted.

Consulte Códigos de Erro para uma lista completa.

Notas de versão

Consulte Notas de Versão para uma lista completa.