Setting up rule to link CiviCRM contact (created when webform is submitted) with Drupal 7 account
You may need to add your rule here. The one by Christia is specifically about "updating a contact record in the CiviCRM" not about creating.

The only way we have made rules work for creation from webform is to add eg a Tag to the contact and then run the trigger off that. You need civicrm_entity.

This is cross-posted from the Drupal SE. Here is an example Rule you may be able to glean things from. It also auto logs in the contact.

{ "rules_self_create_user_account_and_login" : {
    "LABEL" : "Create User Account",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "civicrm", "rules" ],
    "ON" : { "civicrm_entity_tag_create" : [] },
    "IF" : [
      { "NOT civicrm_entity_user_exists" : { "civicrm_contact" : [ "civicrm-entity-tag:entity-id-contact" ] } },
      { "data_is" : {
          "data" : [ "civicrm-entity-tag:entity-table" ],
          "value" : "civicrm_contact"
        }
      },
      { "data_is" : { "data" : [ "civicrm-entity-tag:tag-id" ], "value" : "525" } }
    ],
    "DO" : [
      { "civicrm_entity_action_create_user" : {
          "USING" : {
            "civicrm_contact" : [ "civicrm-entity-tag:entity-id-contact" ],
            "is_active" : "1",
            "notify" : "1",
            "signin" : "1",
            "username_format" : "email"
          },
          "PROVIDE" : { "civicrm_user" : { "civicrm_user" : "Created Drupal User" } }
        }
      },
      { "redirect" : { "url" : "civicrm\/user?reset=1" } }
    ]
  }
}


You need to Add a new Tag - note the ID of that tag - change the exported Rule to the Tag you created for this purpose. Then also alter your webform so it adds that Tag automatically to the contact upon form submission