Seller issued licenses in AWS License Manager - AWS License Manager

Seller issued licenses in AWS License Manager

Independent software vendors (ISVs) can use AWS License Manager to manage and distribute software licenses to end users. As an issuer, you can track the usage of your seller issued licenses centrally using the License Manager dashboard.

License Manager uses open, secure, industry standards for representing licenses and allows customers to cryptographically verify their authenticity. License Manager associates each license with an asymmetric key. As the ISV, you own the asymmetric AWS KMS keys and store them in your account.

Seller issued licenses require cross-Region replication of license metadata. License Manager automatically replicates each seller issued license and its associated information to other Regions.

License Manager supports a variety of different licensing models including the following:

  • Perpetual — Lifetime licenses with no expiration date that authorize users to use the software indefinitely.

  • Floating - Shareable licenses with multiple instances of the application. Licenses can be prepaid and a fixed set of entitlements added to them.

  • Subscription - Licenses with expiration dates that can be automatically renewed unless specifically deactivated.

  • Usage-based - Licenses with specific terms based on usage, such as the number of API requests, transactions, or storage capabilities.

You can create licenses in License Manager and distribute them to customers using an AWS IAM identity or through bearer tokens generated by License Manager. Customers with an AWS account can re-distribute the license entitlements to AWS identities in their respective organizations. Customers with distributed entitlements can check out and check in the required entitlements from that license through your software integration with License Manager.

Entitlements

License Manager captures license capabilities as entitlements in the license. Entitlements can be characterized with a limited or unlimited quantity. An example of a limited entitlement is ‘40 GB of data transfer’. An example of an unlimited quantity entitlement is ‘Platinum Tier’.

A license captures all the granted entitlements, the activation and expiration dates, and the issuer details. A license is a versioned entity and each version is immutable. License versions are updated whenever the license is changed.

To check out or check in limited entitlements, ISV applications must specify the amount of each limited capacity. For unlimited entitlements, ISV applications can simply specify the relevant entitlement to check out or check in again. Finally, limited capabilities also support an “overage” flag, which indicates if end-users can exceed their usage of the initial entitlements. License Manager tracks and reports usage, along with any overages, to the ISV.

License usage

License Manager allows you to centrally track licenses across multiple Regions, by maintaining a count of all the checked out entitlements. License Manager also tracks the identity of the user and the underlying resource identifier, if available, associated with each check out, along with when it was checked out. You can track this time-series data through CloudWatch Events.

Licenses may be in one of the following states:

  • Created - The license is created.

  • Updated - The license is updated.

  • Deactivated - The license is deactivated.

  • Deleted - The license is deleted.

Requirements

To get started with this feature, you need permission to call the following License Manager API actions.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "license-manager:CreateLicense", "license-manager:CreateLicenseVersion", "license-manager:ListLicenses", "license-manager:ListLicenseVersions", "license-manager:GetLicense", "license-manager:DeleteLicense", "license-manager:CheckoutLicense", "license-manager:CheckInLicense", "license-manager:ExtendLicenseConsumption", "license-manager:GetLicenseUsage", "license-manager:CreateGrant", "license-manager:CreateGrantVersion", "license-manager:DeleteGrant", "license-manager:GetGrant", "license-manager:ListDistributedGrants" ], "Resource": "*" } ] }

If you will integrate with License Manager so customers without an AWS account can consume licenses sold outside of AWS Marketplace, you must create a role that enables your software application to call the License Manager API. For example, you can use the AWS CLI. First, call the create-role command to create a role named AWSLicenseManagerConsumptionRole.

aws iam create-role --role-name AWSLicenseManagerConsumptionRole --description "Role used to consume licenses using AWS License Manager" --max-session-duration 3600 --assume-role-policy-document file://trust-policy-document.json

The following is trust-policy-document.json.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": { "Federated": "openid-license-manager.amazonaws.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringLike": { "openid-license-manager.amazonaws.com:sub": "66a9bbf5-0896-460f-a1a9-de535dcc175b" } } } }

Next, call the put-role-policy command to add the required permissions to the AWSLicenseManagerConsumptionRole role.

aws iam put-role-policy --role-name AWSLicenseManagerConsumptionRole --policy-name LicenseManagerConsumptionPolicy --policy-document file://policy-document.json

The following is policy-document.json.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "license-manager:CheckoutLicense", "license-manager:CheckInLicense", "license-manager:ExtendLicenseConsumption", "license-manager:ListReceivedLicenses", "license-manager:ListLicenses" ], "Resource": "*" } }

Creating seller issued licenses

Use the following procedure to create a block of licenses to grant to customers using the AWS Management Console. Alternatively, you can create the license using the CreateLicense API action.

To create a license using the console

  1. Open the License Manager console at https://console.aws.amazon.com/license-manager/.

  2. Choose Seller Issued Licenses from the left menu.

  3. Choose Create license.

  4. For License metadata, provide the following information:

    • License name - The name, up to 150 characters, to display to buyers.

    • License description - An optional description, up to 400 characters, that differentiates this license from other licenses.

    • Product SKU - The product SKU.

    • Recipient - The recipient's name (company or individual).

    • Home Region - The AWS Region for the license. Although licenses can be consumed globally, you can only change the license in the home region. You cannot change the home region for a license after you create it.

    • License start date - The date of activation.

    • License end date - The end date of the license, if applicable.

  5. For Consumption configuration, provide the following information:

    • Renewal frequency - Whether to renew weekly, monthly, or not at all.

    • Consumption configuration - Choose Provisional Consumption Configuration Options if the license is to be used for continuous connectivity or Borrow if the license is to be used offline. Enter Max time to live (minutes) to set the length of availability of the license.

  6. For Issuer, provide the following information:

    • Enter an AWS KMS key - License Manager uses this key to sign and verify the issuer. For more information, see Cryptographic Signing of Licenses.

    • Issuer name - The business name for the seller.

    • Seller of record - An optional business name.

    • Agreement URL - The URL to the license agreement.

  7. For Entitlement, provide the following information about the capabilities that the license grants to recipients:

    • Name - The name of the recipient.

    • Unit type - Select the unit type, then provide the maximum count.

    • Check Allow check in if recipients must check in licenses before renewal.

    • Check Overages allowed if recipients can use the resource beyond the maximum count. This option might incur additional charges for the recipient.

  8. Choose Create license.

Granting licenses to customers

After you add the new license, you can grant the license to a customer with an AWS account using the AWS Management Console. The recipient must accept the grant before using the license. For more information, see Granted licenses in License Manager.

Alternatively, if the customer does not have an AWS account, you can use the License Manager API to enable customers to consume licenses.

To grant a license to a customer using the console

  1. Open the License Manager console at https://console.aws.amazon.com/license-manager/.

  2. Choose Seller Issued Licenses from the left menu.

  3. Choose the ID of the license to open its details page.

  4. For Grants, choose Create grant.

  5. For Grant details, provide the following information:

    • Grant name - The grant name. This is used to enable search capabilities.

    • AWS account ID - The AWS account number of the license recipient.

    • License rights - Choose Consumption if the recipient can consume granted entitlements only and Distribution if the recipient can distribute granted entitlements to other AWS accounts.

    • Home Region - The AWS Region for the license.

  6. Choose Create grant.

Getting temporary credentials for customers without an AWS account

If you have customers that do not have an AWS account, you can use entitlements for them the same way that you do for your customers with an AWS account. Use the following procedure to get temporary AWS credentials for your customers without an AWS account. The API calls must be made in the home Region.

To get temporary credentials to use in calling the License Manager API

  1. Call the CreateToken API action to get a refresh token encoded as a JWT token.

  2. Call the GetAccessToken API action, specifying the refresh token that you received from CreateToken in the previous step, to receive a temporary access token.

  3. Call the AssumeRoleWithWebIdentity API action, specifying the access token that you received from GetAccessToken in the previous step, and the AWSLicenseManagerConsumptionRole role that you created, to get temporary AWS credentials.

Consuming licenses

License Manager allows multiple users to concurrently consume entitlements, with limited capabilities, from a single license. Call the CheckoutLicense API action. The following is a description of the parameters.

  • Key fingerprint — Trusted license issuer.

    Example: aws:123456789012:issuer:issuer-fingerprint

  • Product SKU — Product identifier for this license, as defined by the license issuer when creating the license. The same product SKU might exist across multiple ISVs. Therefore, trusted key fingerprints play an important role.

    Example: 1a2b3c4d2f5e69f440bae30eaec9570bb1fb7358824f9ddfa1aa5a0daEXAMPLE

  • Entitlements — Capabilities to check out. If you specify an unlimited capability, the quantity is zero. Example:

    "Entitlements": [ { "Name": "DataTransfer", "Unit": "Gigabytes", "Value": 10 }, { "Name": "DataStorage", "Unit": "Gigabytes", "Value": 5 } ]
  • Beneficiary — Software as a Service (SaaS) ISVs can check out licenses on behalf of a customer by including the customer identifier. License Manager limits the call to the repository of licenses created in the SaaS ISV account.

    Example: user@domain.com

  • Node ID — An identifier used to node-lock the license to a single instance of the application.

    Example: 10.0.21.57

Deleting seller issued licenses

After you delete a license, you can recreate it. The license and its data are retained and available to the license issuer and license grantees in read-only mode for six months.

Use the following procedure to delete a license that you have created using the AWS Management Console. Alternatively, you can delete the license using the DeleteLicense API action.

To delete a license using the console

  1. Open the License Manager console at https://console.aws.amazon.com/license-manager/.

  2. Choose Seller issued licenses from the left menu.

  3. Choose the radio button next to the license to select it for deletion.

  4. Choose Delete. When prompted for confirmation, enter delete and choose Delete.