Selecione suas preferências de cookies

Usamos cookies essenciais e ferramentas semelhantes que são necessárias para fornecer nosso site e serviços. Usamos cookies de desempenho para coletar estatísticas anônimas, para que possamos entender como os clientes usam nosso site e fazer as devidas melhorias. Cookies essenciais não podem ser desativados, mas você pode clicar em “Personalizar” ou “Recusar” para recusar cookies de desempenho.

Se você concordar, a AWS e terceiros aprovados também usarão cookies para fornecer recursos úteis do site, lembrar suas preferências e exibir conteúdo relevante, incluindo publicidade relevante. Para aceitar ou recusar todos os cookies não essenciais, clique em “Aceitar” ou “Recusar”. Para fazer escolhas mais detalhadas, clique em “Personalizar”.

Controlando o acesso aos recursos do Kinesis Video Streams usando AWS IoT

Modo de foco
Controlando o acesso aos recursos do Kinesis Video Streams usando AWS IoT - Amazon Kinesis Video Streams

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Esta seção descreve como permitir que um dispositivo (por exemplo, uma câmera) envie dados de áudio e vídeo somente para um determinado stream de vídeo do Kinesis. Você pode fazer isso usando o provedor de AWS IoT credenciais e uma função AWS Identity and Access Management (IAM).

Os dispositivos podem usar certificados X.509 para se conectar AWS IoT usando protocolos de autenticação TLS mútua. Outros Serviços da AWS (por exemplo, o Kinesis Video Streams) não oferecem suporte à autenticação baseada em certificado, mas podem ser AWS chamados usando AWS credenciais no formato Signature versão 4. O algoritmo Signature Version 4 normalmente exige que o chamador tenha um ID de chave de acesso e uma chave de acesso secreta. AWS IoT tem um provedor de credenciais que permite usar o certificado X.509 integrado como a identidade exclusiva do dispositivo para autenticar AWS solicitações (por exemplo, solicitações para o Kinesis Video Streams). Isso elimina a necessidade de armazenar um ID de chave de acesso e uma chave de acesso secreta em seu dispositivo.

O provedor de credenciais autentica um cliente (nesse caso, um Kinesis Video SDK Streams que está sendo executado na câmera para a qual você deseja enviar dados para um stream de vídeo) usando um certificado X.509 e emite um token de segurança temporário com privilégios limitados. Você pode usar o token para assinar e autenticar qualquer AWS solicitação (nesse caso, uma chamada para o Kinesis Video Streams). Para obter mais informações, consulte Autorização de chamadas diretas para AWS serviços.

Essa forma de autenticar as solicitações da sua câmera no Kinesis Video Streams exige que você crie e configure IAM uma função e anexe políticas IAM apropriadas à função para que o provedor de credenciais possa assumir AWS IoT a função em seu nome.

Para obter mais informações sobre AWS IoT, consulte a AWS IoT Core documentação. Para obter mais informações sobre a IAM, consulte AWS Identity and Access Management (IAM).

AWS IoT ThingName como nome do stream

Etapa 1: criar qualquer tipo de AWS IoT coisa e qualquer AWS IoT coisa

Em AWS IoT, uma coisa é uma representação de um dispositivo específico ou entidade lógica. Nesse caso, AWS IoT algo representa seu stream de vídeo do Kinesis e você deseja configurar o controle de acesso em nível de recurso. Para criar uma coisa, primeiro você deve criar um tipo de AWS IoT coisa. Você pode usar tipos de AWS IoT coisas para armazenar informações de descrição e configuração comuns a todas as coisas associadas ao mesmo tipo de coisa.

  1. O comando de exemplo a seguir cria um tipo de coisa kvs_example_camera:

    aws --profile default iot create-thing-type --thing-type-name kvs_example_camera > iot-thing-type.json
  2. Esse exemplo de comando cria kvs_example_camera_stream uma coisa do tipo kvs_example_camera coisa:

    aws --profile default iot create-thing --thing-name kvs_example_camera_stream --thing-type-name kvs_example_camera > iot-thing.json

Etapa 2: Criar uma IAM função a ser assumida por AWS IoT

IAMas funções são semelhantes às dos usuários, pois uma função é uma AWS identidade com políticas de permissões que determinam o que a identidade pode ou não fazer AWS. Uma função pode ser assumida por qualquer pessoa que precise dela. Quando você assume uma função, ela fornece credenciais de segurança temporárias para sua sessão de função.

A função que você cria nesta etapa pode ser assumida AWS IoT para obter credenciais temporárias do serviço de token de segurança (STS) ao realizar solicitações de autorização de credenciais do cliente. Nesse caso, o cliente é o Kinesis SDK Video Streams que está sendo executado na sua câmera.

Execute as etapas a seguir para criar e configurar essa IAM função:

  1. Crie uma função do IAM.

    O comando de exemplo a seguir cria uma IAM função chamadaKVSCameraCertificateBasedIAMRole:

    aws --profile default iam create-role --role-name KVSCameraCertificateBasedIAMRole --assume-role-policy-document 'file://iam-policy-document.json' > iam-role.json

    Você pode usar a seguinte política de confiança JSON paraiam-policy-document.json:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "credentials.iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. Em seguida, anexe uma política de permissões à IAM função que você criou anteriormente. Essa política de permissões permite o controle de acesso seletivo (um subconjunto de operações suportadas) para um AWS recurso. Nesse caso, o AWS recurso é o stream de vídeo para o qual você deseja que sua câmera envie dados. Em outras palavras, quando todas as etapas de configuração forem concluídas, essa câmera poderá enviar dados somente para esse streaming de vídeo.

    aws --profile default iam put-role-policy --role-name KVSCameraCertificateBasedIAMRole --policy-name KVSCameraIAMPolicy --policy-document 'file://iam-permission-document.json'

    Você pode usar a seguinte IAM política JSON paraiam-permission-document.json:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kinesisvideo:DescribeStream", "kinesisvideo:PutMedia", "kinesisvideo:TagStream", "kinesisvideo:GetDataEndpoint" ], "Resource": "arn:aws:kinesisvideo:*:*:stream/${credentials-iot:ThingName}/*" } ] }

    Observe que essa política autoriza as ações especificadas somente em um stream de vídeo (AWS recurso) especificado pelo espaço (${credentials-iot:ThingName}) reservado. Esse espaço reservado assume o valor do atributo AWS IoT thing ThingName quando o provedor de AWS IoT credenciais envia o nome do stream de vídeo na solicitação.

  3. Em seguida, crie um alias de função para sua IAM função. O alias da função é um modelo de dados alternativo que aponta para a IAM função. Uma solicitação de provedor de AWS IoT credenciais deve incluir um alias de função para indicar qual IAM função assumir para obter as credenciais temporárias do. STS

    O exemplo de comando a seguir cria um alias de função chamado KvsCameraIoTRoleAlias,

    aws --profile default iot create-role-alias --role-alias KvsCameraIoTRoleAlias --role-arn $(jq --raw-output '.Role.Arn' iam-role.json) --credential-duration-seconds 3600 > iot-role-alias.json
  4. Agora você pode criar a política que permitirá assumir AWS IoT a função com o certificado (depois de anexado) usando o alias da função.

    O exemplo de comando a seguir cria uma política para AWS IoT calledKvsCameraIoTPolicy.

    aws --profile default iot create-policy --policy-name KvsCameraIoTPolicy --policy-document 'file://iot-policy-document.json'

    Você pode usar o comando a seguir para criar o iot-policy-document.json documentoJSON:

    cat > iot-policy-document.json <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:AssumeRoleWithCertificate" ], "Resource": "$(jq --raw-output '.roleAliasArn' iot-role-alias.json)" } ] } EOF

Etapa 3: Criar e configurar o certificado X.509

A comunicação entre um dispositivo (seu stream de vídeo) AWS IoT é protegida pelo uso de certificados X.509.

  1. Crie o certificado ao qual você deve anexar a política AWS IoT que você criou anteriormente.

    aws --profile default iot create-keys-and-certificate --set-as-active --certificate-pem-outfile certificate.pem --public-key-outfile public.pem.key --private-key-outfile private.pem.key > certificate
  2. Anexe a política para AWS IoT (KvsCameraIoTPolicycriada anteriormente) a esse certificado.

    aws --profile default iot attach-policy --policy-name KvsCameraIoTPolicy --target $(jq --raw-output '.certificateArn' certificate)
  3. Anexe sua AWS IoT coisa (kvs_example_camera_stream) ao certificado que você acabou de criar:

    aws --profile default iot attach-thing-principal --thing-name kvs_example_camera_stream --principal $(jq --raw-output '.certificateArn' certificate)
  4. Para autorizar solicitações por meio do provedor de AWS IoT credenciais, você precisa do endpoint de AWS IoT credenciais, que é exclusivo do seu ID. Conta da AWS Você pode usar o comando a seguir para obter o endpoint de AWS IoT credenciais.

    aws --profile default iot describe-endpoint --endpoint-type iot:CredentialProvider --output text > iot-credential-provider.txt
  5. Além do certificado X.509 criado anteriormente, você também deve ter um certificado CA para estabelecer confiança com o serviço de back-end. TLS Você pode obter o certificado CA usando o seguinte comando:

    curl --silent 'https://www.amazontrust.com/repository/SFSRootCAG2.pem' --output cacert.pem

Etapa 4: Teste as AWS IoT credenciais com seu stream de vídeo do Kinesis

Agora você pode testar as AWS IoT credenciais que você configurou até agora.

  1. Primeiro, crie um streaming de vídeo do Kinesis com o qual você deseja testar essa configuração.

    Importante

    Crie um stream de vídeo com um nome idêntico ao nome da AWS IoT coisa que você criou na etapa anterior (kvs_example_camera_stream).

    aws kinesisvideo create-stream --data-retention-in-hours 24 --stream-name kvs_example_camera_stream
  2. Em seguida, ligue para o provedor de AWS IoT credenciais para obter as credenciais temporárias:

    curl --silent -H "x-amzn-iot-thingname:kvs_example_camera_stream" --cert certificate.pem --key private.pem.key https://IOT_GET_CREDENTIAL_ENDPOINT/role-aliases/KvsCameraIoTRoleAlias/credentials --cacert ./cacert.pem > token.json
    nota

    Você pode usar o comando a seguir para obter oIOT_GET_CREDENTIAL_ENDPOINT:

    IOT_GET_CREDENTIAL_ENDPOINT=`cat iot-credential-provider.txt`

    A saída JSON contém o accessKeysecretKey, e osessionToken, que você pode usar para acessar o Kinesis Video Streams.

  3. Para seu teste, você pode usar essas credenciais para invocar o Kinesis Video DescribeStream API Streams para o stream de vídeo de amostra. kvs_example_camera_stream

    AWS_ACCESS_KEY_ID=$(jq --raw-output '.credentials.accessKeyId' token.json) AWS_SECRET_ACCESS_KEY=$(jq --raw-output '.credentials.secretAccessKey' token.json) AWS_SESSION_TOKEN=$(jq --raw-output '.credentials.sessionToken' token.json) aws kinesisvideo describe-stream --stream-name kvs_example_camera_stream

Etapa 5: implantar AWS IoT certificados e credenciais no sistema de arquivos da sua câmera e transmitir dados para o seu stream de vídeo

nota

As etapas desta seção descrevem o envio de mídia para um stream de vídeo do Kinesis a partir de uma câmera que está usando o. Use a biblioteca de produtores de C++

  1. Copie o certificado X.509, a chave privada e o certificado CA gerados nas etapas anteriores para o sistema de arquivos da sua câmera. Especifique os caminhos para onde esses arquivos são armazenados, o nome do alias da função e o endpoint de AWS IoT credenciais para executar o gst-launch-1.0 comando ou seu aplicativo de amostra.

  2. O exemplo de comando a seguir usa autorização de AWS IoT certificado para enviar vídeo para o Kinesis Video Streams:

    gst-launch-1.0 rtspsrc location=rtsp://YourCameraRtspUrl short-header=TRUE ! rtph264depay ! video/x-h264,format=avc,alignment=au ! h264parse ! kvssink stream-name="kvs_example_camera_stream" aws-region="YourAWSRegion" iot-certificate="iot-certificate,endpoint=credential-account-specific-prefix.credentials.iot.aws-region.amazonaws.com,cert-path=/path/to/certificate.pem,key-path=/path/to/private.pem.key,ca-path=/path/to/cacert.pem,role-aliases=KvsCameraIoTRoleAlias"

AWS IoT CertificateId como nome do stream

Para representar seu dispositivo (por exemplo, sua câmera) por meio de AWS IoT algo, mas autorizar um nome de stream diferente, você pode usar o AWS IoT certificateId atributo como nome do stream e fornecer permissões ao Kinesis Video Streams no stream usando. AWS IoT As etapas para fazer isso são semelhantes às descritas anteriormente, com algumas alterações.

  • Modifique a política de permissões para sua IAM função (iam-permission-document.json) da seguinte forma:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kinesisvideo:DescribeStream", "kinesisvideo:PutMedia", "kinesisvideo:TagStream", "kinesisvideo:GetDataEndpoint" ], "Resource": "arn:aws:kinesisvideo:*:*:stream/${credentials-iot:AwsCertificateId}/*" } ] }
    nota

    O recurso ARN usa o ID do certificado como espaço reservado para o nome do stream. A IAM permissão funcionará quando você usar o ID do certificado como nome do stream. Obtenha o ID do certificado para que você possa usá-lo como nome do fluxo na descrição a seguir da API chamada de fluxo.

    export CERTIFICATE_ID=`cat certificate | jq --raw-output '.certificateId'`
  • Verifique essa alteração usando o comando describe-stream do Kinesis Video CLI Streams:

    AWS_ACCESS_KEY_ID=$(jq --raw-output '.credentials.accessKeyId' token.json) AWS_SECRET_ACCESS_KEY=$(jq --raw-output '.credentials.secretAccessKey' token.json) AWS_SESSION_TOKEN=$(jq --raw-output '.credentials.sessionToken' token.json) aws kinesisvideo describe-stream --stream-name ${CERTIFICATE_ID}
  • Passe o certificateId para o provedor de AWS IoT credenciais no aplicativo de amostra no Kinesis Video Streams C++: SDK

    credential_provider = make_unique<IotCertCredentialProvider>(iot_get_credential_endpoint, cert_path, private_key_path, role_alias, ca_cert_path, certificateId);
    nota

    Observe que você está passando o thingname para o provedor de AWS IoT credenciais. Você pode usar getenv para passar o nome da coisa para o aplicativo de demonstração da mesma forma que passa os outros AWS IoT atributos. Use o ID do certificado como o nome de streaming nos parâmetros da linha de comando quando estiver executando o aplicativo de amostra.

Use AWS IoT credenciais para transmitir para um nome de fluxo codificado

Para representar seu dispositivo (por exemplo, sua câmera) por meio de AWS IoT algo, mas autorizar o streaming para um stream de vídeo específico do Amazon Kinesis, forneça permissões do Amazon Kinesis Video Streams no stream usando. AWS IoT O processo é semelhante às seções anteriores, com algumas alterações.

Modifique a política de permissões para sua IAM função (iam-permission-document.json) da seguinte forma:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kinesisvideo:DescribeStream", "kinesisvideo:PutMedia", "kinesisvideo:TagStream", "kinesisvideo:GetDataEndpoint" ], "Resource": "arn:aws:kinesisvideo:*:*:stream/YourStreamName/*" } ] }

Copie o certificado X.509, a chave privada e o certificado CA gerados nas etapas anteriores para o sistema de arquivos da sua câmera.

Especifique os caminhos para onde esses arquivos são armazenados, o nome do alias da função, o nome da AWS IoT coisa e o endpoint de AWS IoT credenciais para executar o gst-launch-1.0 comando ou seu aplicativo de amostra.

O exemplo de comando a seguir usa autorização de AWS IoT certificado para enviar vídeo para o Amazon Kinesis Video Streams:

gst-launch-1.0 rtspsrc location=rtsp://YourCameraRtspUrl short-header=TRUE ! rtph264depay ! video/x-h264,format=avc,alignment=au ! h264parse ! kvssink stream-name="YourStreamName" aws-region="YourAWSRegion" iot-certificate="iot-certificate,endpoint=credential-account-specific-prefix.credentials.iot.aws-region.amazonaws.com,cert-path=/path/to/certificate.pem,key-path=/path/to/private.pem.key,ca-path=/path/to/cacert.pem,role-aliases=KvsCameraIoTRoleAlias,iot-thing-name=YourThingName"
PrivacidadeTermos do sitePreferências de cookies
© 2025, Amazon Web Services, Inc. ou suas afiliadas. Todos os direitos reservados.